code: function done(error) {
        global.clearTimeout(timer);
        eventLoop.removeListener('tick', ontick);
        eventLoop.removeListener('idle', done);
        eventLoop.browser.removeListener('error', done);
  
        --eventLoop.waiting;
        try {
          callback(error);
        } catch (error) {
          // If callback makes an assertion that fails, we end here.
          // If we throw error synchronously, it gets swallowed.
          setImmediate(function() {
            throw error;
          });
        }
      }
docs: The wait is over ...