summaryrefslogtreecommitdiff
path: root/ext/node/polyfills/http2.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills/http2.ts')
-rw-r--r--ext/node/polyfills/http2.ts18
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]() {