In the previous articles, we explored two pillars of event‑driven communication:

Fire‑and‑forget events – broadcasting that something happened.

Callback messages – asynchronous requests that return a result via an observable.

These two patterns cover the vast majority of use cases. But there is a third, often overlooked category: synchronous operations – those that must return a value immediately, without waiting for a promise or a stream.

In many frontend applications, synchronous calls are everywhere: