diff options
Diffstat (limited to 'ext/node/polyfills/http2.ts')
-rw-r--r-- | ext/node/polyfills/http2.ts | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/ext/node/polyfills/http2.ts b/ext/node/polyfills/http2.ts index cd6c47eeb..b4cda65f8 100644 --- a/ext/node/polyfills/http2.ts +++ b/ext/node/polyfills/http2.ts @@ -840,6 +840,11 @@ async function clientHttp2Request( reqHeaders, ); + if (session.closed || session.destroyed) { + debugHttp2(">>> session closed during request promise"); + throw new ERR_HTTP2_STREAM_CANCEL(); + } + return await op_http2_client_request( session[kDenoClientRid], pseudoHeaders, @@ -900,6 +905,12 @@ export class ClientHttp2Stream extends Duplex { session[kDenoClientRid], this.#rid, ); + + if (session.closed || session.destroyed) { + debugHttp2(">>> session closed during response promise"); + throw new ERR_HTTP2_STREAM_CANCEL(); + } + const [response, endStream] = await op_http2_client_get_response( this.#rid, ); @@ -918,7 +929,12 @@ export class ClientHttp2Stream extends Duplex { ); this[kDenoResponse] = response; this.emit("ready"); - })(); + })().catch((e) => { + if (!(e instanceof ERR_HTTP2_STREAM_CANCEL)) { + debugHttp2(">>> request/response promise error", e); + } + this.destroy(e); + }); } [kUpdateTimer]() { |