This seems to be a bug in the way operation context works.
For some operations e.g. non sync adds, updates or deletes to the journal- the callback should be executed immediately as long as there are no previous callbacks waiting in the queue for the operation context.
This means we need to distinguish between two types of lineups - one which is waiting for a completion and one that is not.
For non sync lineups there is also no need for a completion - we don't care about it.
Here are some examples of sequences of operations on a context
(S = sync operation, NS = non sync operation)
Case 1: Just non sync operations
NS1 - send response immediately since nothing lined up
NS2 - send response immediately since nothing lined up
Case 2: Sync followed by non sync operations
S1 - response won't be sent until completion comes back
NS1 - response won't be sent until the completion for S1 comes back
NS2 - response won't be sent until the completion for S1 comes back
[now the completion for S1 comes back, and this triggers...]
Response for S1 sent back
Response for NS1 sent back
Response for NS2 sent back