docs: function Request(method, url) {
    var self = this;
    Emitter.call(this);
    this._query = this._query || [];
    this.method = method;
    this.url = url;
    this.header = {};
    this._header = {};
    this.on('end', function(){
      var err = null;
      var res = null;
  
      try {
        res = new Response(self);
      } catch(e) {
        err = new Error('Parser is unable to parse the response');
        err.parse = true;
        err.original = e;
        return self.callback(err);
      }
  
      self.emit('response', res);
  
      if (err) {
        return self.callback(err, res);
      }
  
      if (res.status >= 200 && res.status < 300) {
        return self.callback(err, res);
      }
  
      var new_err = new Error(res.statusText || 'Unsuccessful HTTP response');
      new_err.original = err;
      new_err.response = res;
      new_err.status = res.status;
  
      self.callback(new_err, res);
    });
  }