From bc0461db4f0054b19f1924433a8032ddfdfc879d Mon Sep 17 00:00:00 2001 From: pfg Date: Tue, 20 May 2025 15:14:33 -0700 Subject: [PATCH] test for abort signal reason gc problem --- test/js/web/abort/abort-signal-reason.test.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 test/js/web/abort/abort-signal-reason.test.js diff --git a/test/js/web/abort/abort-signal-reason.test.js b/test/js/web/abort/abort-signal-reason.test.js new file mode 100644 index 0000000000..835f89d50f --- /dev/null +++ b/test/js/web/abort/abort-signal-reason.test.js @@ -0,0 +1,21 @@ +import { expect, test, describe } from "bun:test"; + +describe("AbortSignal reason", () => { + // https://bugs.webkit.org/show_bug.cgi?id=293319 + test("reason is preserved after GC", () => { + const controller = new AbortController(); + controller.signal; + controller.abort(new Error("one two three")); // error must be defined inline so it doesn't get kept alive + Bun.gc(true); + + let error; + try { + controller.signal.throwIfAborted(); + } catch (e) { + error = e; + } + + expect(error).toBe(controller.signal.reason); + expect(error.message).toBe("one two three"); + }); +});