I guess erlang is an example of keeping your flow linear, albeit at the cost of searching through the incoming event queue and thus reordering of events.
Either way, it's processing some inbound messages before others for a process that is getting messages for requests as well as responses.
Personally, I have seen ocassional attempts to prioritize inbound queues, but it gets unwieldy quickly: you end up either reading nearly the whole mailbox on each iteration, or having to queue non-priority messages yourself, or do terrible things in erts code to add the ability to send to the front of a mailbox.
Since you perform this pattern matching, this means that messages may not be processed in the order they were received.