diff --git a/benchmarks/benchmark-http2.js b/benchmarks/benchmark-http2.js index 46ac89f97bf..2b99b5ad536 100644 --- a/benchmarks/benchmark-http2.js +++ b/benchmarks/benchmark-http2.js @@ -91,21 +91,23 @@ class SimpleRequest { }).on('finish', resolve) } - onConnect (abort) { } + onRequestStart (controller, ctx) { } - onHeaders (statusCode, headers, resume) { - this.dst.on('drain', resume) + onResponseStart (controller, statusCode, headers, statusMessage) { + this.dst.on('drain', () => controller.resume()) } - onData (chunk) { - return this.dst.write(chunk) + onResponseData (controller, chunk) { + if (!this.dst.write(chunk)) { + controller.pause() + } } - onComplete () { + onResponseEnd (controller, trailers) { this.dst.end() } - onError (err) { + onResponseError (controller, err) { throw err } } diff --git a/lib/dispatcher/client-h2.js b/lib/dispatcher/client-h2.js index b77013df98d..e6af15aaf1e 100644 --- a/lib/dispatcher/client-h2.js +++ b/lib/dispatcher/client-h2.js @@ -74,6 +74,8 @@ const { } } = http2 +function noop() {} + function getGoAwayError (session, errorCode) { return session[kError] || (errorCode === NGHTTP2_NO_ERROR @@ -106,18 +108,18 @@ function detachRequestFromStream (request) { } function bindRequestToStream (request, stream, cleanup) { - const previousCleanup = request[kRequestStreamCleanup] + const previousCleanup = request[kRequestStreamCleanup] || noop detachRequestFromStream(request) - previousCleanup?.() + previousCleanup() request[kRequestStreamId] = stream.id request[kRequestStream] = stream request[kRequestStreamCleanup] = cleanup } function clearRequestStream (request) { - const cleanup = request[kRequestStreamCleanup] + const cleanup = request[kRequestStreamCleanup] || noop detachRequestFromStream(request) - cleanup?.() + cleanup() } function canRetryRequestAfterGoAway (request) { @@ -501,8 +503,6 @@ function onSocketClose () { this[kClosed] = true } -function noop () {} - function closeStreamSession (stream) { const session = stream[kHTTP2Session]