summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/tests/unit/http_test.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts
index b8eb3be84..f407c9186 100644
--- a/cli/tests/unit/http_test.ts
+++ b/cli/tests/unit/http_test.ts
@@ -2762,6 +2762,39 @@ for (const compression of [true, false]) {
});
}
+Deno.test({
+ name: "request signal is aborted when response errors",
+ permissions: { net: true },
+ async fn() {
+ let httpConn: Deno.HttpConn;
+ const promise = (async () => {
+ const listener = Deno.listen({ port: 4501 });
+ const conn = await listener.accept();
+ listener.close();
+ httpConn = Deno.serveHttp(conn);
+ const ev = await httpConn.nextRequest();
+ const { request, respondWith } = ev!;
+
+ await delay(300);
+ await assertRejects(() => respondWith(new Response("Hello World")));
+ assert(request.signal.aborted);
+ })();
+
+ const abortController = new AbortController();
+
+ fetch("http://127.0.0.1:4501/", {
+ signal: abortController.signal,
+ }).catch(() => {
+ // ignore
+ });
+
+ await delay(100);
+ abortController.abort();
+ await promise;
+ httpConn!.close();
+ },
+});
+
function chunkedBodyReader(h: Headers, r: BufReader): Deno.Reader {
// Based on https://tools.ietf.org/html/rfc2616#section-19.4.6
const tp = new TextProtoReader(r);