AsyncWaiter and HandleWatcher usage is relatively inefficient without special MessagePump support. This means that in practice we end up doing hops to some background thread with MessagePumpMojo waiting on handles, which is itself also inefficient.
We should be able to guarantee that any handle event (such as a handle becoming readable) results in service request dispatch after at most one thread hop in the case of thread-to-thread pipe communication (hopping directly from the writing thread to the service's binding thread) or an incoming IPC (hopping directly from the IO thread to the service's binding thread).
For same-thread pipe communication we should be able to guarantee that WriteMessage is roughly equivalent to a PostTask dispatching the service request on the current thread.
Comment 1 by yzshen@chromium.org
, Feb 28 2016