Due to how bevy schedule events, they can only be received after the event happens. For example, the OperationStarted event can only be read after the system that emits the event finishes. If the operation is blocking, then the operation may have already finished by the time another system can read the event. This causes problems for systems that reads the events for some form of logging and feedback.
To Reproduce:
git checkout `koonpeng/delayed_events`
cd diagram-editor
cargo t test_ws_debug
Notice that the response is received before the OperationStarted event is read.