Connect

Provide a public "header sent" flag
until node does.

Source

res.__defineGetter__('headerSent', function(){
    return this._header;
  });

res.setHeader()

Set header field to val, special-casing
the Set-Cookie field for multiple support.

Source

res.setHeader = function(field, val){
    var key = field.toLowerCase()
      , prev;

    // special-case Set-Cookie
    if (this._headers && 'set-cookie' == key) {
      if (prev = this.getHeader(field)) {
          if (Array.isArray(prev)) {
              val = prev.concat(val);
          } else if (Array.isArray(val)) {
              val = val.concat(prev);
          } else {
              val = [prev, val];
          }
      }
    // charset
    } else if ('content-type' == key && this.charset) {
      val += '; charset=' + this.charset;
    }

    return setHeader.call(this, field, val);
  };

res._renderHeaders()

Proxy to emit "header" event.

Source

res._renderHeaders = function(){
    if (!this._emittedHeader) this.emit('header');
    this._emittedHeader = true;
    return _renderHeaders.call(this);
  };

  res.writeHead = function(statusCode, reasonPhrase, headers){
    if (typeof reasonPhrase === 'object') headers = reasonPhrase;
    if (typeof headers === 'object') {
      Object.keys(headers).forEach(function(key){
        this.setHeader(key, headers[key]);
      }, this);
    }
    if (!this._emittedHeader) this.emit('header');
    this._emittedHeader = true;
    return writeHead.call(this, statusCode, reasonPhrase);
  };

  res._hasConnectPatch = true;
}