aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/bun.js/serve.test.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/bun.js/serve.test.ts b/test/bun.js/serve.test.ts
index d5581cf7c..c049aad1a 100644
--- a/test/bun.js/serve.test.ts
+++ b/test/bun.js/serve.test.ts
@@ -113,6 +113,44 @@ it("request.signal works in trivial case", async () => {
);
});
+it("request.signal works in leaky case", async () => {
+ var aborty = new AbortController();
+ var didAbort = false;
+ var leaky;
+ await runTest(
+ {
+ async fetch(req) {
+ leaky = req;
+ expect(didAbort).toBe(false);
+ aborty.abort();
+ await Bun.sleep(2);
+ return new Response("Test failed!");
+ },
+ },
+ async server => {
+ try {
+ const resp = fetch(`http://${server.hostname}:${server.port}`, { signal: aborty.signal });
+
+ await Bun.sleep(1);
+
+ leaky.signal.addEventListener("abort", () => {
+ didAbort = true;
+ });
+
+ await resp;
+
+ throw new Error("Expected fetch to throw");
+ } catch (e: any) {
+ expect(e.name).toBe("AbortError");
+ }
+
+ await Bun.sleep(1);
+
+ expect(didAbort).toBe(true);
+ },
+ );
+});
+
it("should work for a file", async () => {
const fixture = resolve(import.meta.dir, "./fetch.js.txt");
const textToExpect = readFileSync(fixture, "utf-8");