Currently, AsyncWaitOperator receives computed results from a user thread and puts it in StreamElementQueue. This queue is synchronized as the emitter thread pulls available elements in a blocking fashion. With the recent migration to mailbox model, these elements are then put into a letter to be outputted in the mailbox thread.
If we directly send the results from the user thread to the mailbox, we can get rid of any synchronization as everything happens in the user thread. That will slim down the code heavily.