  static void on_event_internal(uv_async_t* async, int status) {
#else
  static void on_event_internal(uv_async_t* async) {
#endif
    EventThread* thread = static_cast<EventThread*>(async->data);
    E event;
    while (thread->event_queue_->dequeue(event)) {
      thread->on_event(event);
    }
  }