handleProgress = (direction, e) => {
    if (e.total > 0) {
      e.percent = (e.loaded / e.total) * 100;

      if (e.percent === 100) {
        clearTimeout(self._uploadTimeoutTimer);
      }
    }

    e.direction = direction;
    self.emit('progress', e);
  }
Initiate request, invoking callback `fn(res)`
with an instanceof `Response`.

@param {Function} fn
@return {Request} for chaining
@api public