code: function AsyncPolling(pollingFunc, delay) {
          if (!(this instanceof AsyncPolling)) {
              return new AsyncPolling(pollingFunc, delay);
          }
  
          this._pollingFunc = pollingFunc.bind(this, pollCallback.bind(this));
          this._delay = delay.valueOf();
  
          this._timer = null;
          this._mustSchedule = false;
      }
docs: This event emitter can fire the following events:
  run, start, result, error, end, schedule, stop
  
  @param {Function} pollingFunc Called for each poll with a callback as
  parameter. Call it at the end of each poll
  to provide an error (if any),
  a result (if any) and whether to stop
  the polling or not.
  @param {number|object} delay Minimum number of milliseconds to wait
  before scheduling a new poll.