code: function(uri, method, form) {
    this.method = method = method || 'GET';
    this.headers = {};
    this.url = uri;
    this.pathname = uri;
    this.cookies = {};
    this.params = [];
  
    if (document.cookie) {
      this.headers['Cookie'] = document.cookie;
      this.cookies = DOM.getCookies();
    }
  
    if (form) {
      var serial = DOM.serialize(form) || {};
      this.headers['Content-Type'] =
        form.enctype || 'application/x-www-form-urlencoded';
      if (method === 'GET') {
        this.query = serial.data;
        this.rawQuery = serial.encoded;
      } else {
        this.body = serial.data;
        this.rawBody = serial.encoded;
      }
      // method override
      if (serial.data & serial.data._method) {
        this.method = method = serial.data._method.toUpperCase();
      }
    }
  
    if (~uri.indexOf('?')) {
      uri = uri.split('?');
      this.query = parsePairs(uri[1], '&');
      this.rawQuery = uri[1];
      this.pathname = uri = uri[0];
    }
  }
docs: Request (OutgoingMessage)
  TODO Move to IO