code: function _startTimeout(duration, transaction) {
      if (!duration) {
          return undefined;
      }
      return setTimeout(function() {
          transaction._timeoutFired = true;
          if (transaction.next) {
              transaction.next(new TransactionTimedOutError());
          }
      }, duration);
  }
docs: Starts the timeout timer with the given duration.
  If the timeout ends before it was cancelled, it will call the callback with an error.
  @param {number} duration the timeout duration in milliseconds.
  @param {Function} next the function to call next.
  @return {number} The handle of the timeout
  @private