| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
'use strict'var slice = Array.prototype.slicemodule.exports = function onHeaders(res, listener) {  if (!res) {    throw new TypeError('argument res is required')  }  if (typeof listener !== 'function') {    throw new TypeError('argument listener must be a function')  }  res.writeHead = createWriteHead(res.writeHead, listener)}function createWriteHead(prevWriteHead, listener) {  var fired = false;    return function writeHead(statusCode) {        var args = setWriteHeadHeaders.apply(this, arguments);        if (!fired) {      fired = true      listener.call(this)            if (typeof args[0] === 'number' && this.statusCode !== args[0]) {        args[0] = this.statusCode        args.length = 1      }    }    prevWriteHead.apply(this, args);  }}function setWriteHeadHeaders(statusCode) {  var length = arguments.length  var headerIndex = length > 1 && typeof arguments[1] === 'string'    ? 2    : 1  var headers = length >= headerIndex + 1    ? arguments[headerIndex]    : undefined  this.statusCode = statusCode    if (Array.isArray(headers)) {        for (var i = 0, len = headers.length; i < len; ++i) {      this.setHeader(headers[i][0], headers[i][1])    }  } else if (headers) {        var keys = Object.keys(headers)    for (var i = 0; i < keys.length; i++) {      var k = keys[i]      if (k) this.setHeader(k, headers[k])    }  }    var args = new Array(Math.min(length, headerIndex))  for (var i = 0; i < args.length; i++) {    args[i] = arguments[i]  }  return args}
 |