Node: H2 err_stream_premature_close
ignoramous opened this issue · comments
Saw this error in prod:
2023-01-04T18:41:32Z app[30a70a92] hkg [info]node:internal/errors:491
2023-01-04T18:41:32Z app[30a70a92] hkg [info] ErrorCaptureStackTrace(err);
2023-01-04T18:41:32Z app[30a70a92] hkg [info] ^
2023-01-04T18:41:32Z app[30a70a92] hkg [info]Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at new NodeError (node:internal/errors:400:5)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at Http2ServerRequest.onclose (node:internal/streams/end-of-stream:143:30)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at Http2ServerRequest.emit (node:events:513:28)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at ServerHttp2Stream.onStreamAbortedRequest (node:internal/http2/compat:194:13)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at ServerHttp2Stream.emit (node:events:525:35)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at closeStream (node:internal/http2/core:1926:14)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at ServerHttp2Stream.close (node:internal/http2/core:2298:5)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at node:internal/http2/core:3250:46
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at Map.forEach (<anonymous>)
2023-01-04T18:41:32Z app[30a70a92] hkg [info] at TLSSocket.socketOnClose (node:internal/http2/core:3250:19) {
2023-01-04T18:41:32Z app[30a70a92] hkg [info] code: 'ERR_STREAM_PREMATURE_CLOSE'
Happens with fair regularity:
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info]node:internal/errors:490
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] ErrorCaptureStackTrace(err);
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] ^
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info]Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at new NodeError (node:internal/errors:399:5)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at Http2ServerRequest.onclose (node:internal/streams/end-of-stream:149:30)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at Http2ServerRequest.emit (node:events:512:28)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at ServerHttp2Stream.onStreamAbortedRequest (node:internal/http2/compat:193:13)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at ServerHttp2Stream.emit (node:events:524:35)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at closeStream (node:internal/http2/core:1925:14)
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] at Http2Stream.onStreamClose (node:internal/http2/core:544:5) {
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info] code: 'ERR_STREAM_PREMATURE_CLOSE'
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info]}
2023-02-04T20:34:47Z app[3d8dd1efe40989] ams [info]Node.js v19.5.0
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info]node:internal/errors:490
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] ErrorCaptureStackTrace(err);
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] ^
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info]Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at new NodeError (node:internal/errors:399:5)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.onclose (node:internal/streams/end-of-stream:149:30)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.emit (node:events:512:28)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.onStreamAbortedRequest (node:internal/http2/compat:193:13)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.emit (node:events:524:35)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at closeStream (node:internal/http2/core:1925:14)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.close (node:internal/http2/core:2297:5)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at node:internal/http2/core:3249:46
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at Map.forEach (<anonymous>)
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] at TLSSocket.socketOnClose (node:internal/http2/core:3249:19) {
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info] code: 'ERR_STREAM_PREMATURE_CLOSE'
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info]}
2023-02-04T20:36:45Z app[3d8d31dbe35138] fra [info]Node.js v19.5.0
underlying tls socket closed and incoming read stream not fully read
logs from fly:2023-02-10T22:26:20Z app[3d8d31dbe35138] fra [info]2023-02-10T22:26:20.964Z I NodeJs 2500 requests in 214.579 secs; chk: 0
2023-02-10T22:26:21Z app[39080554b5ed87] sjc [info]2023-02-10T22:26:21.296Z E NodeJs tls: client err; TLS handshake timeout
2023-02-10T22:26:21Z app[73287114c44085] gru [info]2023-02-10T22:26:21.500Z I NodeJs 300 requests in 68.511 secs; chk: 0
2023-02-10T22:26:22Z app[39080554b5ed87] sjc [info]2023-02-10T22:26:22.016Z E NodeJs tls: client err; TLS handshake timeout
2023-02-10T22:26:22Z app[39080554b5ed87] sjc [info]2023-02-10T22:26:22.616Z E NodeJs tls: client err; TLS handshake timeout
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]2023-02-10T22:26:24.056Z W NodeJs h2: req fin w error Http2ServerRequest {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] _readableState: ReadableState {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] objectMode: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] highWaterMark: 16384,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] buffer: BufferList { head: null, tail: null, length: 0 },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] length: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] pipes: [],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] flowing: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ended: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] endEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] reading: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] constructed: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] sync: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] needReadable: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] emittedReadable: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readableListening: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] resumeScheduled: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errorEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] emitClose: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] autoDestroy: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] destroyed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errored: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closeEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] defaultEncoding: 'utf8',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] awaitDrainWriters: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] multiAwaitDrain: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readingMore: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] dataEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] decoder: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] encoding: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(kPaused)]: null
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] _events: [Object: null prototype] {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] pause: [Function: onRequestPause],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] resume: [Function: onRequestResume],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] aborted: [ [Function: onclose], [Function: onclose] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] end: [ [Function: onend], [Function: onend] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] finish: [ [Function: onfinish], [Function: onfinish] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] error: [ [Function: onerror], [Function: onerror] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] close: [ [Function: onclose], [Function: onclose] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readable: [Function: next]
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] _eventsCount: 8,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] _maxListeners: undefined,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(kCapture)]: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(state)]: { closed: false, didRead: true },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(headers)]: [Object: null prototype] {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':method': 'POST',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':path': '/1:AAIAgA==',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':scheme': 'https',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':authority': 'max.rethinkdns.com',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'content-type': 'application/dns-message',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] accept: 'application/dns-message',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'content-length': '33',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(nodejs.http2.sensitiveHeaders)]: []
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(rawHeaders)]: [
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':method',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'POST',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':path',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] '/1:AAIAgA==',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':scheme',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'https',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ':authority',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'max.rethinkdns.com',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'content-type',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'application/dns-message',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'accept',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'application/dns-message',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] 'content-length',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] '33'
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(trailers)]: {},
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(rawTrailers)]: [],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(stream)]: Http2Stream {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] id: 13,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closed: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] destroyed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] state: {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] state: 6,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] weight: 16,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] sumDependencyWeight: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] localClose: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] remoteClose: 1,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] localWindowSize: 65535
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readableState: ReadableState {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] objectMode: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] highWaterMark: 16384,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] buffer: BufferList { head: null, tail: null, length: 0 },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] length: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] pipes: [],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] flowing: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ended: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] endEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] reading: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] constructed: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] sync: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] needReadable: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] emittedReadable: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readableListening: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] resumeScheduled: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errorEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] autoDestroy: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errored: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] destroyed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] emitClose: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closeEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] awaitDrainWriters: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] defaultEncoding: 'utf8',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] readingMore: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] multiAwaitDrain: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] decoder: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] dataEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(kPaused)]: false
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] encoding: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] writableState: WritableState {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] highWaterMark: 16384,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] objectMode: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] needDrain: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] finalCalled: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ended: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ending: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] destroyed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] finished: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] defaultEncoding: 'utf8',
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] decodeStrings: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] writing: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] length: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] corked: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] sync: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] onwrite: [Function: bound onwrite],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] bufferProcessing: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] writelen: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] writecb: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] buffered: [],
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] afterWriteTickInfo: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] allBuffers: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] bufferedIndex: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] pendingcb: 0,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] allNoop: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] prefinished: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] constructed: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] emitClose: true,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errorEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] errored: null,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] autoDestroy: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closeEmitted: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] closed: false,
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] }
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(kOnFinished)]: []
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] [Symbol(aborted)]: true
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] },
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at new NodeError (node:internal/errors:399:5)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]} Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.emit (node:events:524:35)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.onclose (node:internal/streams/end-of-stream:149:30)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.onStreamAbortedRequest (node:internal/http2/compat:193:13)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.emit (node:events:524:35)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at closeStream (node:internal/http2/core:1925:14)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2Stream.onStreamClose (node:internal/http2/core:544:5) {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] code: 'ERR_STREAM_PREMATURE_CLOSE'
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]}
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]2023-02-10T22:26:24.061Z E NodeJs http2: stream error; Stream closed with error code NGHTTP2_STREAM_CLOSED
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]node:internal/errors:490
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ErrorCaptureStackTrace(err);
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] ^
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]Error [ERR_STREAM_PREMATURE_CLOSE]: Premature close
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at new NodeError (node:internal/errors:399:5)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.onclose (node:internal/streams/end-of-stream:149:30)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2ServerRequest.emit (node:events:524:35)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.onStreamAbortedRequest (node:internal/http2/compat:193:13)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at ServerHttp2Stream.emit (node:events:524:35)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at closeStream (node:internal/http2/core:1925:14)
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] at Http2Stream.onStreamClose (node:internal/http2/core:544:5) {
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info] code: 'ERR_STREAM_PREMATURE_CLOSE'
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]}
2023-02-10T22:26:24Z app[3d8d31dbe35138] fra [info]Node.js v19.6.0
the error handler registered works, but lack of try
-catch
around for await (const b of req)
was likely causing an unhandled err_stream_premature_close
(notice how this error is logged twice: Once by the registered error handler, and the second is an unhandled error presumably from for await ...
).
serverless-dns/src/server-node.js
Lines 792 to 793 in 6958aea