dy's content-length of ${len + msg[kBytesWritten]} byte(s) does not match the content-length of ${msg._contentLength} byte(s) set in header`);
    msg[kBytesWritten] += len;
  } else
    len ??= typeof chunk === "string" ? @Buffer.byteLength(chunk, encoding) : chunk.byteLength, msg[kBytesWritten] += len;
  function connectionUnCorkNT(conn) {
    conn.uncork();
  }
  let lazyCrlfBuf;
  function getCrlfBuf() {
    if (!lazyCrlfBuf)
      lazyCrlfBuf = @Buffer.from(`\r
`);
    return lazyCrlfBuf;
  }
  function strictContentLength(msg2) {
    return msg2.strictContentLength && msg2._contentLength != null && msg2._hasBody && !msg2._removedContLen && !msg2.chunkedEncoding && !msg2.hasHeader("transfer-encoding");
  }
  if (!msg._header) {
    if (fromEnd)
      len ??= typeof chunk === "string" ? @Buffer.byteLength(chunk, encoding) : chunk.byteLength, msg._contentLength = len;
    msg._implicitHeader();
  }
  if (!msg._hasBody)
    if (msg[kRejectNonStandardBodyWrites])
      throw @makeErrorWithCode(68);
    else
      return process.nextTick(callback), !0;
  if (!fromEnd && msg.socket && !msg.socket.writableCorked)
    msg.socket.cork(), process.nextTick(connectionUnCorkNT, msg.socket);
  let ret;
  if (msg.chunkedEncoding && chunk.length !== 0)
    if (len ??= typeof chunk === "string" ? @Buffer.byteLength(chunk, encoding) : chunk.byteLength, msg[kCorked] && msg._headerSent)
      msg[kChunkedBuffer].push(chunk, encoding, callback), msg[kChunkedLength] += len, ret = msg[kChunkedLength] < msg[kHighWaterMark];
    else {
      let crlf_buf = getCrlfBuf();
      msg._send(len.toString(16), "latin1", null), msg._send(crlf_buf, null, null), msg._send(chunk, encoding, null, len), ret = msg._send(crlf_buf, null, callback);
    }
  else
    ret = msg._send(chunk, encoding, callback, len);
  return ret;
}
function OutgoingMessage(options) {
  if (!new.target)
    return new OutgoingMessage(options);
  Stream.@call(this, options), this.sendDate = !0, this.finished = !1, this[headerStateSymbol] = NodeHTTPHeaderState.none, this[kAbortController] = null, this[kBytesWritten] = 0, this.writable = !0, this.destroyed = !1, this._hasBody = !0, this._trailer = "", this._contentLength = null, this._closed = !1, this._header = null, this._headerSent = !1, this[kHighWaterMark] = options?.highWaterMark ?? 65536;
}
var OutgoingMessagePrototype = {
  constructor: OutgoingMessage,
  __proto__: Stream.prototype,
  _keepAliveTimeout: 0,
  _defaultKeepAlive: !0,
  shouldKeepAlive: !0,
  _onPendingData: function nop2() {
  },
  outputSize: 0,
  outputData: [],
  strictContentLength: !1,
  _removedTE: !1,
  _removedContLen: !1,
  _removedConnection: !1,
  usesChunkedEncodingByDefault: !0,
  _closed: !1,
  _headerNames: @undefined,
  appendHeader(name, value) {
    validateString(name, "name");
    var headers = this[headersSymbol] ??= new Headers;
    return headers.append(name, value), this;
  },
  _implicitHeader() {
    throw @makeErrorWithCode(149, "_implicitHeader()");
  },
  flushHeaders() {
  },
  getHeader(name) {
    return validateString(name, "name"), getHeader(this[headersSymbol], name);
  },
  write(chunk, encoding, callback) {
    if (typeof encoding === "function")
      callback = encoding, encoding = null;
    return write_(this, chunk, encoding, callback, !1);
  },
  pipe() {
    this.emit("error", @makeErrorWithCode(227));
  },
  getHeaderNames() {
    var headers = this[headersSymbol];
    if (!headers)
      return [];
    return @Array.from(headers.keys());
  },
  getRawHeaderNames() {
    var headers = this[headersSymbol];
    if (!headers)
      return [];
    return getRawKeys.@call(headers);
  },
  getHeaders() {
    let headers = this[headersSymbol];
    if (!headers)
      return kEmptyObject;
    return headers.toJSON();
  },
  removeHeader(name) {
    if (validateString(name, "name"), this._header !== @undefined && this._header !== null || this[headerStateSymbol] === NodeHTTPHeaderState.sent)
      throw @makeErrorWithCode(69, "remove");
    let headers = this[headersSymbol];
    if (!headers)
      return;
    headers.delete(name);
  },
  setHeader(name, value) {
    if (this._header !== @undefined && this._header !== null || this[headerStateSymbol] == NodeHTTPHeaderState.sent)
      throw @makeErrorWithCode(69, "set");
    validateHeaderName(name), validateHeaderValue(name, value);
    let headers = this[headersSymbol] ??= new Headers;
    return setHeader(headers, name, value), this;
  },
  setHeaders(headers) {
    if (this._header || this[headerStateSymbol] !== NodeHTTPHeaderState.none)
      throw @makeErrorWithCode(69, "set");
    if (!headers || @isArray(headers) || typeof headers.keys !== "function" || typeof headers.get !== "function")
      throw @makeErrorWithCode(118, "headers", ["Headers", "Map"], headers);
    let cookies = [];
    for (let { 0: key, 1: value } of headers) {
      if (key === "set-cookie") {
        if (@isArray(value))
          cookies.push(...value);
        else
          cookies.push(value);
        continue;
      }
      this.setHeader(key, value);
    }
    if (cookies.length)
      this.setHeader("set-cookie", cookies);
    return this;
  },
  hasHeader(name) {
    validateString(name, "name");
    let headers = this[headersSymbol];
    if (!headers)
      return !1;
    return headers.has(name);
  },
  get headers() {
    let headers = this[headersSymbol];
    if (!headers)
      return kEmptyObject;
    return headers.toJSON();
  },
  set headers(value) {
    this[headersSymbol] = new Headers(value);
  },
  addTrailers(headers) {
    this._trailer = "";
    let keys = Object.keys(headers), isArray = @isArray(headers);
    for (let i = 0, l = keys.length;i < l; i++) {
      let field, value, key = keys[i];
      if (isArray)
        field = headers[key][0], value = headers[key][1];
      else
        field = key, value = headers[key];
      validateHeaderName(field, "Trailer name");
      let isArrayValue = @isArray(value);
      if (isArrayValue && value.length > 1 && (!this[kUniqueHeaders] || !this[kUniqueHeaders].has(field.toLowerCase())))
        for (let j = 0, l2 = value.length;j < l2; j++) {
          if (checkInvalidHeaderChar(value[j]))
            throw @makeErrorWithCode(121, "trailer content", field);
          this._trailer += field + ": " + value[j] + `\r
`;
        }
      else {
        if (isArrayValue)
          value = value.join("; ");
        if (checkInvalidHeaderChar(value))
          throw @makeErrorWithCode(121, "trailer content", field);
        this._trailer += field + ": " + value + `\r
`;
      }
    }
  },
  setTimeout(msecs, callback) {
    if (this.callback)
      this.emit("timeout", callback);
    if (!this[fakeSocketSymbol])
      this.once("socket", function socketSetTimeoutOnConnect(socket) {
        socket.setTimeout(msecs, callback);
      });
    else
      this.socket.setTimeout(msecs);
    return this;
  },
  get connection() {
    return this.socket;
  },
  set connection(value) {
    this.socket = value;
  },
  get socket() {
    return this[fakeSocketSymbol] = this[fakeSocketSymbol] ?? new FakeSocket(this), this[fakeSocketSymbol];
  },
  set socket(value) {
    this[fakeSocketSymbol] = value;
  },
  get chunkedEncoding() {
    return !1;
  },
  set chunkedEncoding(value) {
  },
  get writableObjectMode() {
    return !1;
  },
  get writableLength() {
    return this.finished ? 0 : this[kBytesWritten] || 0;
  },
  get writableHighWaterMark() {
    return 16384;
  },
  get writableNeedDrain() {
    return !this.destroyed && !this.finished && this[kBodyChunks] && this[kBodyChunks].length > 0;
  },
  get writableEnded() {
    return this.finished;
  },
  get writableFinished() {
    return this.finished && !!(this[kEmitState] & 1 << ClientRequestEmitState.finish);
  },
  _send(data, encoding, callback, byteLength) {
    if (!this._headerSent && this._header !== null) {
      if (typeof data === "string" && (encoding === "utf8" || encoding === "latin1" || !encoding))
        data = this._header + data;
      else {
        let header = this._header;
        this.outputData.unshift({
          data: header,
          encoding: "latin1",
          callback: null
        }), this.outputSize += header.length, this._onPendingData(header.length);
      }
      this._headerSent = !0;
    }
    return this._writeRaw(data, encoding, callback, byteLength);
  },
  _writeRaw(data, encoding, callback, _size) {
    let conn = this[kHandle];
    if (conn?.destroyed)
      return !1;
    if (typeof encoding === "function")
      callback = encoding, encoding = null;
    if (conn && conn._httpMessage === this && conn.writable) {
      if (this.outputData.length)
        this._flushOutput(conn);
      return conn.write(data, encoding, callback);
    }
    return this.outputData.push({ data, encoding, callback }), this.outputSize += data.length, this._onPendingData(data.length), this.outputSize < this[kHighWaterMark];
  },
  end(_chunk, _encoding, _callback) {
    return this;
  },
  get writableCorked() {
    return this.socket.writableCorked;
  },
  set writableCorked(value) {
  },
  cork() {
    this.socket.cork();
  },
  uncork() {
    this.socket.uncork();
  },
  destroy(_err) {
    if (this.destroyed)
      return this;
    let handle = this[kHandle];
    if (this.destroyed = !0, handle)
      handle.abort();
    return this;
  }
};
OutgoingMessage.prototype = OutgoingMessagePrototype;
ObjectDefineProperty(OutgoingMessage.prototype, "_headerNames", {
  __proto__: null,
  get: deprecate(function() {
    let headers = this.getHeaders();
    if (headers !== null) {
      let out = Object.create(null), keys = ObjectKeys(headers);
      for (let i = 0;i < keys.length; ++i) {
        let key = keys[i];
        out[key] = key;
      }
      return out;
    }
    return null;
  }, "OutgoingMessage.prototype._headerNames is deprecated", "DEP0066"),
  set: deprecate(function(val) {
    if (typeof val === "object" && val !== null) {
      let headers = this.getHeaders();
      if (!headers)
        return;
      let keys = ObjectKeys(val);
      for (let i = 0;i < keys.length; ++i) {
        let header = headers[keys[i]];
        if (header)
          header[keys[i]] = val[keys[i]];
      }
    }
  }, "OutgoingMessage.prototype._headerNames is deprecated", "DEP0066")
});
ObjectDefineProperty(OutgoingMessage.prototype, "_headers", {
  __proto__: null,
  get: deprecate(function() {
    return this.getHeaders();
  }, "OutgoingMessage.prototype._headers is deprecated", "DEP0066"),
  set: deprecate(function(val) {
    if (val == null)
      this[kOutHeaders] = null;
    else if (typeof val === "object") {
      let headers = this[kOutHeaders] = Object.create(null), keys = ObjectKeys(val);
      for (let i = 0;i < keys.length; ++i) {
        let name = keys[i];
        headers[name.toLowerCase()] = [name, val[name]];
      }
    }
  }, "OutgoingMessage.prototype._headers is deprecated", "DEP0066")
});
@setPrototypeDirect.@call(OutgoingMessage, Stream);
$ = {
  OutgoingMessage,
  FakeSocket,
  OutgoingMessagePrototype
};
return $})

