diff --git a/deps/libeio/eio.c b/deps/libeio/eio.c index 9f53692655..7d54ca97c9 100644 --- a/deps/libeio/eio.c +++ b/deps/libeio/eio.c @@ -548,9 +548,6 @@ static int etp_poll (void) } } - if (want_poll_cb) - want_poll_cb (); - errno = EAGAIN; return -1; } diff --git a/src/node.cc b/src/node.cc index 5c77e932ef..5599f5eee1 100644 --- a/src/node.cc +++ b/src/node.cc @@ -721,7 +721,9 @@ static void EIOCallback(EV_P_ ev_async *watcher, int revents) { assert(revents == EV_ASYNC); // Give control to EIO to process responses. In nearly every case // EIOPromise::After() (file.cc) is called once EIO receives the response. - eio_poll(); + if (-1 == eio_poll() && !ev_async_pending(&eio_watcher)) { + ev_async_send(EV_DEFAULT_UC_ &eio_watcher); + } } // EIOWantPoll() is called from the EIO thread pool each time an EIO