Refactors MethodReader/drain_events/channel.wait