serverless-dns / serverless-dns

The RethinkDNS resolver that deploys to Cloudflare Workers, Deno Deploy, Fastly, and Fly.io

Home Page:https://rethinkdns.com/configure

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 ...).

for await (const chunk of req) {
buffers.push(chunk);