summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDivy Srivastava <dj.srivastava23@gmail.com>2024-11-08 18:46:11 +0530
committerGitHub <noreply@github.com>2024-11-08 18:46:11 +0530
commitb482a50299ae4f636a186038460e54af65e2b627 (patch)
tree0d9cb0f2348391b438efa133afd391b189ec0e30 /tests
parent637b1d5508293ed02bef2f317b30bb7c1f0cbc71 (diff)
feat(ext/http): abort event when request is cancelled (#26781)
```js Deno.serve(async (req) => { const { promise, resolve } = Promise.withResolvers<void>(); req.signal.addEventListener("abort", () => { resolve(); }); await promise; return new Response("Ok"); }); ```
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/serve_test.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts
index 9822a0ce2..7d8c6ca06 100644
--- a/tests/unit/serve_test.ts
+++ b/tests/unit/serve_test.ts
@@ -4299,3 +4299,31 @@ Deno.test({
assert(cancelled);
});
+
+Deno.test({
+ name: "AbortSignal event aborted when request is cancelled",
+}, async () => {
+ const { promise, resolve } = Promise.withResolvers<void>();
+
+ const server = Deno.serve({
+ hostname: "0.0.0.0",
+ port: servePort,
+ onListen: () => resolve(),
+ }, async (request) => {
+ const { promise: promiseAbort, resolve: resolveAbort } = Promise
+ .withResolvers<void>();
+ request.signal.addEventListener("abort", () => resolveAbort());
+ assert(!request.signal.aborted);
+
+ await promiseAbort;
+
+ return new Response("Ok");
+ });
+
+ await promise;
+ await fetch(`http://localhost:${servePort}/`, {
+ signal: AbortSignal.timeout(100),
+ }).catch(() => {});
+
+ await server.shutdown();
+});