An open API service indexing awesome lists of open source software.

https://github.com/privatenumber/compare-bun-node

Comparison of Bun's API against Node.js's
https://github.com/privatenumber/compare-bun-node

api bun bun-api is-bun-ready node

Last synced: 12 months ago
JSON representation

Comparison of Bun's API against Node.js's

Awesome Lists containing this project

README

          

# [Bun](https://bun.sh) & [Node.js](https://nodejs.org) API comparison

#### Why?
Have you wondered how Bun's `import 'fs'` differs from Node's?

This repository provides a comparative overview of the [Bun](https://bun.sh) and [Node.js](https://nodejs.org) runtime API.

Scrolling down, you should be able to see what's available in Bun, what's not, and how they differ.

The goal of this comparison is to help you determine if Bun is ready for adoption.

#### Self-maintaining repo

The comparison is [automatically performed every week using GitHub Actions](/.github/workflows/compare.yml), with the latest _Bun Canary_ and _Node.js LTS_.

For more details, refer to the Actions tab.

#### Contribute to Bun!

Bun is a rapidly maturing project and offers excellent opportunities for contributions. If you would like to help improve any aspect of Bun, please visit the [Bun repository](https://github.com/oven-sh/bun).

_Last updated on Mar 10, 2025 with Bun 1.2.5 Node.js v22.14.0._

## [Node.js APIs](https://nodejs.org/api/) compared

_http_agent

Node.jsBun

```js
[Object: null prototype] {
Agent: ƒ Agent(length: 1) {
defaultMaxSockets: Infinity
},
default: {
Agent: [Circular: *2],
globalAgent: Agent {
_events: [Object: null prototype] {
free: ƒ (length: 2) {},
newListener: ƒ maybeEnableKeylog(length: 1) {}
},
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: [Object: null prototype] {
keepAlive: true,
scheduling: "lifo",
timeout: 5000,
noDelay: true,
path: null
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: true,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: Infinity,
totalSocketCount: 0,
Symbol(shapeMode): false,
Symbol(kCapture): false
}
},
globalAgent: [Circular: *4]
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_http_client

Node.jsBun

```js
[Object: null prototype] {
ClientRequest: ƒ ClientRequest(length: 3) {},
default: {
ClientRequest: [Circular: *2]
}
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_http_common

Node.jsBun

```js
[Object: null prototype] {
CRLF: "\r\n",
HTTPParser: ƒ HTTPParser(length: 0) {
REQUEST: 1,
RESPONSE: 2,
kOnMessageBegin: 0,
kOnHeaders: 1,
kOnHeadersComplete: 2,
kOnBody: 3,
kOnMessageComplete: 4,
kOnExecute: 5,
kOnTimeout: 6,
kLenientNone: 0,
kLenientHeaders: 1,
kLenientChunkedLength: 2,
kLenientKeepAlive: 4,
kLenientTransferEncoding: 8,
kLenientVersion: 16,
kLenientDataAfterClose: 32,
kLenientOptionalLFAfterCR: 64,
kLenientOptionalCRLFAfterChunk: 128,
kLenientOptionalCRBeforeLF: 256,
kLenientSpacesAfterChunkSize: 512,
kLenientAll: 1023
},
_checkInvalidHeaderChar: ƒ checkInvalidHeaderChar(length: 1) {},
_checkIsHttpToken: ƒ checkIsHttpToken(length: 1) {},
chunkExpression: /(?:^|\W)chunked(?:$|\W)/i,
continueExpression: /(?:^|\W)100-continue(?:$|\W)/i,
default: {
_checkInvalidHeaderChar: [Circular: *3],
_checkIsHttpToken: [Circular: *4],
chunkExpression: [Circular: *5],
continueExpression: [Circular: *6],
CRLF: "\r\n",
freeParser: ƒ freeParser(length: 3) {},
methods: [
"DELETE",
"GET",
"HEAD",
"POST",
"PUT",
"CONNECT",
"OPTIONS",
"TRACE",
"COPY",
"LOCK",
"MKCOL",
"MOVE",
"PROPFIND",
"PROPPATCH",
"SEARCH",
"UNLOCK",
"BIND",
"REBIND",
"UNBIND",
"ACL",
"REPORT",
"MKACTIVITY",
"CHECKOUT",
"MERGE",
"M-SEARCH",
"NOTIFY",
"SUBSCRIBE",
"UNSUBSCRIBE",
"PATCH",
"PURGE",
"MKCALENDAR",
"LINK",
"UNLINK",
"SOURCE",
"QUERY"
],
parsers: FreeList {
name: "parsers",
ctor: ƒ parsersCb(length: 0) {},
max: 1000,
list: []
},
kIncomingMessage: Symbol(IncomingMessage),
HTTPParser: [Circular: *2],
isLenient: ƒ isLenient(length: 0) {},
prepareError: ƒ prepareError(length: 3) {}
},
freeParser: [Circular: *8],
isLenient: [Circular: *13],
kIncomingMessage: Symbol(IncomingMessage),
methods: [Circular: *9],
parsers: [Circular: *10],
prepareError: [Circular: *14]
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_http_incoming

Node.jsBun

```js
[Object: null prototype] {
IncomingMessage: ƒ IncomingMessage(length: 1) {},
default: {
IncomingMessage: [Circular: *2],
readStart: ƒ readStart(length: 1) {},
readStop: ƒ readStop(length: 1) {}
},
readStart: [Circular: *4],
readStop: [Circular: *5]
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_http_outgoing

Node.jsBun

```js
[Object: null prototype] {
OutgoingMessage: ƒ OutgoingMessage(length: 1) {},
default: {
kHighWaterMark: Symbol(kHighWaterMark),
kUniqueHeaders: Symbol(kUniqueHeaders),
parseUniqueHeadersOption: ƒ parseUniqueHeadersOption(length: 1) {},
validateHeaderName: ƒ wrappedFn(length: 0) {
withoutStackTrace: ƒ (length: 2) {}
},
validateHeaderValue: ƒ wrappedFn(length: 0) {
withoutStackTrace: ƒ (length: 2) {}
},
OutgoingMessage: [Circular: *2]
},
kHighWaterMark: Symbol(kHighWaterMark),
kUniqueHeaders: Symbol(kUniqueHeaders),
parseUniqueHeadersOption: [Circular: *4],
validateHeaderName: [Circular: *5],
validateHeaderValue: [Circular: *7]
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_http_server

Node.jsBun

```js
[Object: null prototype] {
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {},
ServerResponse: ƒ ServerResponse(length: 2) {},
_connectionListener: ƒ connectionListener(length: 1) {},
default: {
STATUS_CODES: [Circular: *2],
Server: [Circular: *3],
ServerResponse: [Circular: *4],
setupConnectionsTracking: ƒ setupConnectionsTracking(length: 0) {},
storeHTTPOptions: ƒ storeHTTPOptions(length: 1) {},
_connectionListener: [Circular: *5],
kServerResponse: Symbol(ServerResponse),
httpServerPreClose: ƒ httpServerPreClose(length: 1) {},
kConnectionsCheckingInterval: Symbol(http.server.connectionsCheckingInterval)
},
httpServerPreClose: [Circular: *9],
kConnectionsCheckingInterval: Symbol(http.server.connectionsCheckingInterval),
kServerResponse: Symbol(ServerResponse),
setupConnectionsTracking: [Circular: *7],
storeHTTPOptions: [Circular: *8]
}
```

```js
{
Agent: ƒ Agent(length: 0) {},
ClientRequest: class ClientRequest extends OutgoingMessage {},
CloseEvent: ƒ CloseEvent(length: 1) {},
IncomingMessage: ƒ IncomingMessage(length: 2) {
prototype: IncomingMessage {
constructor: [Circular: *5],
_construct: ƒ _construct(length: 1) {},
_read: ƒ _read(length: 1) {},
_destroy: ƒ _destroy(length: 2) {},
[get/set] aborted: undefined,
[get/set] connection: Socket {
_events: {
close: undefined,
error: undefined,
prefinish: undefined,
finish: undefined,
drain: undefined,
data: undefined,
end: undefined,
readable: undefined
},
_readableState: {
highWaterMark: 65536,
buffer: [],
bufferIndex: 0,
length: 0,
pipes: [],
awaitDrainWriters: null,
Symbol(kState): 1052940
},
_writableState: {
highWaterMark: 65536,
length: 0,
corked: 0,
onwrite: ƒ bound onwrite(length: 1) {},
writelen: 0,
bufferedIndex: 0,
pendingcb: 0,
Symbol(kState): 17580812,
Symbol(kBufferedValue): null
},
allowHalfOpen: true,
_maxListeners: undefined,
bytesRead: 0,
bytesWritten: 0,
connecting: false,
timeout: 0,
isServer: false,
Symbol(kCapture): false,
Symbol(::bunternal::): undefined
},
statusCode: [Error accessing: undefined is not an object (evaluating 'reqSymbol')],
statusMessage: [Error accessing: undefined is not an object (evaluating 'STATUS_CODES')],
[get/set] httpVersion: "1.1",
[get/set] httpVersionMajor: 1,
[get/set] httpVersionMinor: 1,
[get/set] rawTrailers: [],
[get/set] trailers: [Object: null prototype] {},
setTimeout: ƒ setTimeout(length: 2) {},
[get/set] socket: [Circular: *10]
}
},
METHODS: [
"ACL",
"BIND",
"CHECKOUT",
"CONNECT",
"COPY",
"DELETE",
"GET",
"HEAD",
"LINK",
"LOCK",
"M-SEARCH",
"MERGE",
"MKACTIVITY",
"MKCALENDAR",
"MKCOL",
"MOVE",
"NOTIFY",
"OPTIONS",
"PATCH",
"POST",
"PROPFIND",
"PROPPATCH",
"PURGE",
"PUT",
"REBIND",
"REPORT",
"SEARCH",
"SOURCE",
"SUBSCRIBE",
"TRACE",
"UNBIND",
"UNLINK",
"UNLOCK",
"UNSUBSCRIBE"
],
MessageEvent: ƒ MessageEvent(length: 1) {},
OutgoingMessage: ƒ OutgoingMessage(length: 1) {
prototype: OutgoingMessage {
constructor: [Circular: *22],
_implicitHeader: ƒ (length: 0) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
addTrailers: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {}
}
},
STATUS_CODES: {
100: "Continue",
101: "Switching Protocols",
102: "Processing",
103: "Early Hints",
200: "OK",
201: "Created",
202: "Accepted",
203: "Non-Authoritative Information",
204: "No Content",
205: "Reset Content",
206: "Partial Content",
207: "Multi-Status",
208: "Already Reported",
226: "IM Used",
300: "Multiple Choices",
301: "Moved Permanently",
302: "Found",
303: "See Other",
304: "Not Modified",
305: "Use Proxy",
307: "Temporary Redirect",
308: "Permanent Redirect",
400: "Bad Request",
401: "Unauthorized",
402: "Payment Required",
403: "Forbidden",
404: "Not Found",
405: "Method Not Allowed",
406: "Not Acceptable",
407: "Proxy Authentication Required",
408: "Request Timeout",
409: "Conflict",
410: "Gone",
411: "Length Required",
412: "Precondition Failed",
413: "Payload Too Large",
414: "URI Too Long",
415: "Unsupported Media Type",
416: "Range Not Satisfiable",
417: "Expectation Failed",
418: "I'm a Teapot",
421: "Misdirected Request",
422: "Unprocessable Entity",
423: "Locked",
424: "Failed Dependency",
425: "Too Early",
426: "Upgrade Required",
428: "Precondition Required",
429: "Too Many Requests",
431: "Request Header Fields Too Large",
451: "Unavailable For Legal Reasons",
500: "Internal Server Error",
501: "Not Implemented",
502: "Bad Gateway",
503: "Service Unavailable",
504: "Gateway Timeout",
505: "HTTP Version Not Supported",
506: "Variant Also Negotiates",
507: "Insufficient Storage",
508: "Loop Detected",
509: "Bandwidth Limit Exceeded",
510: "Not Extended",
511: "Network Authentication Required"
},
Server: ƒ Server(length: 2) {
prototype: Server {
ref: ƒ ref(length: 0) {},
unref: ƒ unref(length: 0) {},
closeAllConnections: ƒ closeAllConnections(length: 0) {},
closeIdleConnections: ƒ closeIdleConnections(length: 0) {},
close: ƒ close(length: 1) {},
address: ƒ address(length: 0) {},
listen: ƒ listen(length: 0) {},
setTimeout: ƒ setTimeout(length: 2) {},
constructor: [Circular: *36],
Symbol(Symbol.asyncDispose): ƒ [Symbol.asyncDispose](length: 0) {},
Symbol(kRealListen): ƒ [kRealListen](length: 6) {}
}
},
ServerResponse: ƒ ServerResponse(length: 2) {
prototype: ServerResponse {
constructor: [Circular: *48],
_implicitHeader: ƒ (length: 0) {},
_write: ƒ (length: 3) {},
_writev: ƒ (length: 2) {},
_final: ƒ (length: 1) {},
writeProcessing: ƒ (length: 0) {},
addTrailers: ƒ (length: 1) {},
assignSocket: ƒ (length: 1) {},
detachSocket: ƒ (length: 1) {},
writeContinue: ƒ (length: 1) {},
setTimeout: ƒ (length: 2) {},
appendHeader: ƒ (length: 2) {},
flushHeaders: ƒ (length: 0) {},
getHeader: ƒ (length: 1) {},
getHeaders: ƒ (length: 0) {},
getHeaderNames: ƒ (length: 0) {},
removeHeader: ƒ (length: 1) {},
setHeader: ƒ (length: 2) {},
hasHeader: ƒ (length: 1) {},
writeHead: ƒ (length: 3) {}
}
},
WebSocket: ƒ WebSocket(length: 1) {
CONNECTING: 0,
OPEN: 1,
CLOSING: 2,
CLOSED: 3
},
createServer: ƒ createServer(length: 2) {},
default: {
Agent: [Circular: *2],
Server: [Circular: *36],
METHODS: [Circular: *20],
STATUS_CODES: [Circular: *35],
createServer: [Circular: *70],
ServerResponse: [Circular: *48],
IncomingMessage: [Circular: *5],
request: ƒ request(length: 3) {},
get: ƒ get(length: 3) {},
[get/set] maxHeaderSize: 16384,
validateHeaderName: ƒ validateHeaderName(length: 2) {},
validateHeaderValue: ƒ validateHeaderValue(length: 2) {},
setMaxIdleHTTPParsers: ƒ setMaxIdleHTTPParsers(length: 1) {},
globalAgent: Agent {
_events: [Object: null prototype] {},
_eventsCount: 0,
_maxListeners: undefined,
defaultPort: 80,
protocol: "http:",
options: {
path: null,
noDelay: true
},
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: "lifo",
maxTotalSockets: undefined,
totalSocketCount: 0,
Symbol(kCapture): false
},
ClientRequest: [Circular: *3],
OutgoingMessage: [Circular: *22],
WebSocket: [Circular: *69],
CloseEvent: [Circular: *4],
MessageEvent: [Circular: *21]
},
get: [Circular: *73],
globalAgent: [Circular: *77],
maxHeaderSize: 16384,
request: [Circular: *72],
setMaxIdleHTTPParsers: [Circular: *76],
validateHeaderName: [Circular: *74],
validateHeaderValue: [Circular: *75]
}
```

_stream_duplex

Node.jsBun

```js
[Object: null prototype] {
default: ƒ Duplex(length: 1) {
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {},
from: ƒ (length: 1) {}
},
from: [Circular: *5],
fromWeb: [Circular: *3],
toWeb: [Circular: *4]
}
```

```js
{
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *2],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *7],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *11],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *2],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *2],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *22],
ReadableState: ƒ ReadableState(length: 3) {
prototype: {
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
_fromList: ƒ fromList(length: 2) {},
addAbortListener: [Circular: *23],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
default: ƒ Duplex(length: 1) {
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {},
from: ƒ (length: 1) {}
},
defaultMaxListeners: 10,
errorMonitor: Symbol(events.errorMonitor),
from: [Circular: *32],
fromWeb: [Circular: *30],
getEventListeners: [Circular: *19],
getMaxListeners: [Circular: *20],
init: [Circular: *2],
listenerCount: [Circular: *24],
on: [Circular: *18],
once: [Circular: *17],
prototype: Duplex {
destroy: ƒ (length: 2) {},
write: ƒ (length: 3) {},
cork: ƒ (length: 0) {},
uncork: ƒ (length: 0) {},
setDefaultEncoding: ƒ setDefaultEncoding(length: 1) {},
_write: ƒ (length: 3) {},
_writev: null,
end: ƒ (length: 3) {}
},
setMaxListeners: [Circular: *21],
toWeb: [Circular: *31],
usingDomains: false,
wrap: ƒ (length: 2) {}
}
```

_stream_passthrough

Node.jsBun

```js
[Object: null prototype] {
default: ƒ PassThrough(length: 1) {}
}
```

```js
{
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *2],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *7],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *11],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *2],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *2],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *22],
ReadableState: ƒ ReadableState(length: 3) {
prototype: {
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
_fromList: ƒ fromList(length: 2) {},
addAbortListener: [Circular: *23],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
default: ƒ PassThrough(length: 1) {},
defaultMaxListeners: 10,
errorMonitor: Symbol(events.errorMonitor),
from: ƒ (length: 1) {},
fromWeb: ƒ (length: 2) {},
getEventListeners: [Circular: *19],
getMaxListeners: [Circular: *20],
init: [Circular: *2],
listenerCount: [Circular: *24],
on: [Circular: *18],
once: [Circular: *17],
prototype: PassThrough {
_transform: ƒ (length: 3) {}
},
setMaxListeners: [Circular: *21],
toWeb: ƒ (length: 1) {},
usingDomains: false,
wrap: ƒ (length: 2) {}
}
```

_stream_readable

Node.jsBun

```js
[Object: null prototype] {
ReadableState: ƒ ReadableState(length: 3) {},
_fromList: ƒ fromList(length: 2) {},
default: ƒ Readable(length: 1) {
ReadableState: [Circular: *2],
_fromList: [Circular: *3],
from: ƒ (length: 2) {},
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 2) {},
wrap: ƒ (length: 2) {}
},
from: [Circular: *5],
fromWeb: [Circular: *6],
toWeb: [Circular: *7],
wrap: [Circular: *8]
}
```

```js
{
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *2],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *7],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *11],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *2],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *2],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *22],
ReadableState: ƒ ReadableState(length: 3) {
prototype: {
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
_fromList: ƒ fromList(length: 2) {},
addAbortListener: [Circular: *23],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
default: ƒ Readable(length: 1) {
ReadableState: [Circular: *25],
_fromList: [Circular: *28],
from: ƒ (length: 2) {},
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 2) {},
wrap: ƒ (length: 2) {}
},
defaultMaxListeners: 10,
errorMonitor: Symbol(events.errorMonitor),
from: [Circular: *30],
fromWeb: [Circular: *31],
getEventListeners: [Circular: *19],
getMaxListeners: [Circular: *20],
init: [Circular: *2],
listenerCount: [Circular: *24],
on: [Circular: *18],
once: [Circular: *17],
prototype: Readable {
destroy: ƒ destroy(length: 2) {},
_undestroy: ƒ undestroy(length: 0) {},
_destroy: ƒ (length: 2) {},
push: ƒ (length: 2) {},
unshift: ƒ (length: 2) {},
isPaused: ƒ (length: 0) {},
setEncoding: ƒ (length: 1) {},
read: ƒ (length: 1) {},
_read: ƒ (length: 1) {},
pipe: ƒ (length: 2) {},
unpipe: ƒ (length: 1) {},
on: ƒ (length: 2) {},
addListener: [Circular: *46],
removeListener: ƒ (length: 2) {},
off: [Circular: *47],
removeAllListeners: ƒ (length: 1) {},
resume: ƒ (length: 0) {},
pause: ƒ (length: 0) {},
wrap: ƒ (length: 1) {},
iterator: ƒ (length: 1) {},
Symbol(nodejs.rejection): ƒ (length: 1) {},
Symbol(Symbol.asyncDispose): ƒ (length: 0) {},
Symbol(Symbol.asyncIterator): ƒ (length: 0) {}
},
setMaxListeners: [Circular: *21],
toWeb: [Circular: *32],
usingDomains: false,
wrap: [Circular: *33]
}
```

_stream_transform

Node.jsBun

```js
[Object: null prototype] {
default: ƒ Transform(length: 1) {}
}
```

```js
{
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *2],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *7],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *11],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *2],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *2],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *22],
ReadableState: ƒ ReadableState(length: 3) {
prototype: {
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
_fromList: ƒ fromList(length: 2) {},
addAbortListener: [Circular: *23],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
default: ƒ Transform(length: 1) {},
defaultMaxListeners: 10,
errorMonitor: Symbol(events.errorMonitor),
from: ƒ (length: 1) {},
fromWeb: ƒ (length: 2) {},
getEventListeners: [Circular: *19],
getMaxListeners: [Circular: *20],
init: [Circular: *2],
listenerCount: [Circular: *24],
on: [Circular: *18],
once: [Circular: *17],
prototype: Transform {
_final: ƒ final(length: 1) {},
_transform: ƒ (length: 3) {},
_write: ƒ (length: 3) {},
_read: ƒ (length: 0) {}
},
setMaxListeners: [Circular: *21],
toWeb: ƒ (length: 1) {},
usingDomains: false,
wrap: ƒ (length: 2) {}
}
```

_stream_wrap

Node.jsBun

```js
[Object: null prototype] {
default: class JSStreamSocket extends Socket {}
}
(node:2227) [DEP0125] DeprecationWarning: The _stream_wrap module is deprecated.
(Use `node --trace-deprecation ...` to show where the warning was created)
```

```js
{
Duplex: ƒ Duplex(length: 1) {
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {},
from: ƒ (length: 1) {}
},
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *6],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *11],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *15],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *6],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *6],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *26],
PassThrough: ƒ PassThrough(length: 1) {},
Readable: ƒ Readable(length: 1) {
ReadableState: ƒ ReadableState(length: 3) {
prototype: {
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
_fromList: ƒ fromList(length: 2) {},
from: ƒ (length: 2) {},
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 2) {},
wrap: ƒ (length: 2) {}
},
Stream: ƒ Stream(length: 1) {
isDestroyed: ƒ isDestroyed(length: 1) {},
isDisturbed: ƒ isDisturbed(length: 1) {},
isErrored: ƒ isErrored(length: 1) {},
isReadable: ƒ isReadable(length: 1) {},
isWritable: ƒ isWritable(length: 1) {},
Readable: [Circular: *30],
Writable: ƒ Writable(length: 1) {
WritableState: ƒ WritableState(length: 3) {
prototype: {
getBuffer: ƒ getBuffer(length: 0) {},
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {}
},
Duplex: [Circular: *2],
Transform: ƒ Transform(length: 1) {},
PassThrough: [Circular: *29],
duplexPair: ƒ duplexPair(length: 1) {},
pipeline: ƒ pipeline(length: 0) {
[get/set] Symbol(nodejs.util.promisify.custom): ƒ pipeline(length: 0) {}
},
addAbortSignal: ƒ addAbortSignal(length: 2) {},
finished: ƒ eos(length: 3) {
finished: ƒ finished(length: 2) {},
[get/set] Symbol(nodejs.util.promisify.custom): [Circular: *58]
},
destroy: ƒ destroyer(length: 2) {},
compose: ƒ compose(length: 0) {},
setDefaultHighWaterMark: ƒ setDefaultHighWaterMark(length: 2) {},
getDefaultHighWaterMark: ƒ getDefaultHighWaterMark(length: 1) {},
[get/set] promises: {
finished: [Circular: *58],
pipeline: [Circular: *55]
},
Stream: [Circular: *39],
_isArrayBufferView: ƒ isArrayBufferView(length: 1) {},
_isUint8Array: ƒ isUint8Array(length: 1) {},
_uint8ArrayToBuffer: ƒ _uint8ArrayToBuffer(length: 1) {},
eos: [Circular: *57],
EventEmitter: [Circular: *6]
},
Transform: [Circular: *52],
Writable: [Circular: *45],
_isArrayBufferView: [Circular: *64],
_isUint8Array: [Circular: *65],
_uint8ArrayToBuffer: [Circular: *66],
addAbortListener: [Circular: *27],
addAbortSignal: [Circular: *56],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
compose: [Circular: *60],
default: [Circular: *39],
defaultMaxListeners: 10,
destroy: [Circular: *59],
duplexPair: [Circular: *53],
eos: [Circular: *57],
errorMonitor: Symbol(events.errorMonitor),
finished: [Circular: *57],
getDefaultHighWaterMark: [Circular: *62],
getEventListeners: [Circular: *23],
getMaxListeners: [Circular: *24],
init: [Circular: *6],
isDestroyed: [Circular: *40],
isDisturbed: [Circular: *41],
isErrored: [Circular: *42],
isReadable: [Circular: *43],
isWritable: [Circular: *44],
listenerCount: [Circular: *28],
on: [Circular: *22],
once: [Circular: *21],
pipeline: [Circular: *54],
promises: [Circular: *63],
prototype: Stream {
pipe: ƒ (length: 2) {},
eventNames: ƒ eventNames(length: 0) {}
},
setDefaultHighWaterMark: [Circular: *61],
setMaxListeners: [Circular: *25],
usingDomains: false
}
DeprecationWarning: The _stream_wrap module is deprecated.
code: "DEP0125"

at node:_stream_wrap (node:_stream_wrap:3:20)

```

_stream_writable

Node.jsBun

```js
[Object: null prototype] {
WritableState: ƒ WritableState(length: 3) {},
default: ƒ Writable(length: 1) {
WritableState: [Circular: *2],
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {}
},
fromWeb: [Circular: *4],
toWeb: [Circular: *5]
}
```

```js
{
EventEmitter: ƒ EventEmitter(length: 1) {
prototype: EventEmitter {
setMaxListeners: ƒ setMaxListeners(length: 1) {},
constructor: [Circular: *2],
getMaxListeners: ƒ getMaxListeners(length: 0) {},
emit: ƒ emit(length: 1) {},
addListener: ƒ addListener(length: 2) {},
on: [Circular: *7],
prependListener: ƒ prependListener(length: 2) {},
once: ƒ once(length: 2) {},
prependOnceListener: ƒ prependOnceListener(length: 2) {},
removeListener: ƒ removeListener(length: 2) {},
off: [Circular: *11],
removeAllListeners: ƒ removeAllListeners(length: 1) {},
listeners: ƒ listeners(length: 1) {},
rawListeners: ƒ rawListeners(length: 1) {},
listenerCount: ƒ listenerCount(length: 2) {},
eventNames: ƒ eventNames(length: 0) {},
Symbol(kCapture): false
},
[get/set] captureRejections: false,
[get/set] defaultMaxListeners: 10,
once: ƒ once(length: 2) {},
on: ƒ on(length: 2) {},
getEventListeners: ƒ getEventListeners(length: 2) {},
getMaxListeners: ƒ getMaxListeners(length: 1) {},
setMaxListeners: ƒ setMaxListeners(length: 0) {},
EventEmitter: [Circular: *2],
usingDomains: false,
captureRejectionSymbol: Symbol(nodejs.rejection),
EventEmitterAsyncResource: class EventEmitterAsyncResource extends EventEmitter {},
errorMonitor: Symbol(events.errorMonitor),
addAbortListener: ƒ addAbortListener(length: 2) {},
init: [Circular: *2],
listenerCount: ƒ listenerCount(length: 2) {}
},
EventEmitterAsyncResource: [Circular: *22],
WritableState: ƒ WritableState(length: 3) {
prototype: {
getBuffer: ƒ getBuffer(length: 0) {},
Symbol(kOnConstructed): ƒ onConstructed(length: 1) {}
}
},
addAbortListener: [Circular: *23],
captureRejectionSymbol: Symbol(nodejs.rejection),
captureRejections: false,
default: ƒ Writable(length: 1) {
WritableState: [Circular: *25],
fromWeb: ƒ (length: 2) {},
toWeb: ƒ (length: 1) {}
},
defaultMaxListeners: 10,
errorMonitor: Symbol(events.errorMonitor),
fromWeb: [Circular: *30],
getEventListeners: [Circular: *19],
getMaxListeners: [Circular: *20],
init: [Circular: *2],
listenerCount: [Circular: *24],
on: [Circular: *18],
once: [Circular: *17],
prototype: Writable {
pipe: ƒ (length: 0) {},
write: ƒ (length: 3) {},
cork: ƒ (length: 0) {},
uncork: ƒ (length: 0) {},
setDefaultEncoding: ƒ setDefaultEncoding(length: 1) {},
_write: ƒ (length: 3) {},
_writev: null,
end: ƒ (length: 3) {},
destroy: ƒ (length: 2) {},
_undestroy: ƒ undestroy(length: 0) {},
_destroy: ƒ (length: 2) {},
Symbol(nodejs.rejection): ƒ (length: 1) {},
Symbol(Symbol.asyncDispose): ƒ (length: 0) {}
},
setMaxListeners: [Circular: *21],
toWeb: [Circular: *31],
usingDomains: false
}
```

_tls_common

Node.jsBun

```js
[Object: null prototype] {
SecureContext: ƒ SecureContext(length: 4) {},
createSecureContext: ƒ createSecureContext(length: 1) {},
default: {
SecureContext: [Circular: *2],
createSecureContext: [Circular: *3],
translatePeerCertificate: ƒ translatePeerCertificate(length: 1) {}
},
translatePeerCertificate: [Circular: *5]
}
```

```js
{
CLIENT_RENEG_LIMIT: 3,
CLIENT_RENEG_WINDOW: 600,
DEFAULT_CIPHERS: "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM…",
DEFAULT_ECDH_CURVE: "auto",
DEFAULT_MAX_VERSION: "TLSv1.3",
DEFAULT_MIN_VERSION: "TLSv1.2",
SecureContext: ƒ SecureContext2(length: 1) {},
Server: ƒ Server(length: 2) {},
TLSSocket: ƒ Socket(length: 1) {
prototype: TLSSocket2 {}
},
checkServerIdentity: ƒ checkServerIdentity(length: 2) {},
connect: ƒ connect(length: 0) {},
convertALPNProtocols: ƒ convertALPNProtocols(length: 2) {},
createSecureContext: ƒ createSecureContext(length: 1) {},
createServer: ƒ createServer(length: 2) {},
default: {
CLIENT_RENEG_LIMIT: 3,
CLIENT_RENEG_WINDOW: 600,
connect: [Circular: *7],
convertALPNProtocols: [Circular: *8],
createSecureContext: [Circular: *9],
createServer: [Circular: *10],
DEFAULT_CIPHERS: "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM…",
DEFAULT_ECDH_CURVE: "auto",
DEFAULT_MAX_VERSION: "TLSv1.3",
DEFAULT_MIN_VERSION: "TLSv1.2",
getCiphers: ƒ getCiphers(length: 0) {},
parseCertString: ƒ parseCertString(length: 0) {},
SecureContext: [Circular: *2],
Server: [Circular: *3],
TLSSocket: [Circular: *4],
checkServerIdentity: [Circular: *6],
rootCertificates: [
"-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMC…",
"-----BEGIN CERTIFICATE-----\nMIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVz…",
"-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAG…",
"-----BEGIN CERTIFICATE-----\nMIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAU…",
"-----BEGIN CERTIFICATE-----\nMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UE…",
"-----BEGIN CERTIFICATE-----\nMIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNV…",
"-----BEGIN CERTIFICATE-----\nMIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNV…",
"-----BEGIN CERTIFICATE-----\nMIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkG…",
"-----BEGIN CERTIFICATE-----\nMIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UE…",
"-----BEGIN CERTIFICATE-----\nMIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UE…",
"-----BEGIN CERTIFICATE-----\nMIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNI…",
"-----BEGIN CERTIFICATE-----\nMIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkG…",
"-----BEGIN CERTIFICATE-----\nMIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UE…",
"-----BEGIN CERTIFICATE-----\nMIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZS…",
"-----BEGIN CERTIFICATE-----\nMIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREw…",
"-----BEGIN CERTIFICATE-----\nMIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTER…",
"-----BEGIN CERTIFICATE-----\nMIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJI…",
"-----BEGIN CERTIFICATE-----\nMIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMX…",
"-----BEGIN CERTIFICATE-----\nMIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYD…",
"-----BEGIN CERTIFICATE-----\nMIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNV…",
"-----BEGIN CERTIFICATE-----\nMIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNV…",
"-----BEGIN CERTIFICATE-----\nMIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNV…",
"-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMx…",
"-----BEGIN CERTIFICATE-----\nMIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMx…",
"-----BEGIN CERTIFICATE-----\nMIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMx…",
"-----BEGIN CERTIFICATE-----\nMIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDAS…",
"-----BEGIN CERTIFICATE-----\nMIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYD…",
"-----BEGIN CERTIFICATE-----\nMIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UE…",
"-----BEGIN CERTIFICATE-----\nMIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1U