aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bun.js/webcore/request.zig3
-rw-r--r--test/js/web/request/request.test.ts37
2 files changed, 38 insertions, 2 deletions
diff --git a/src/bun.js/webcore/request.zig b/src/bun.js/webcore/request.zig
index fc38e1825..db073fccc 100644
--- a/src/bun.js/webcore/request.zig
+++ b/src/bun.js/webcore/request.zig
@@ -608,9 +608,8 @@ pub const Request = struct {
}
if (!fields.contains(.signal)) {
- if (value.get(globalThis, "signal")) |signal_| {
+ if (value.getTruthy(globalThis, "signal")) |signal_| {
fields.insert(.signal);
-
if (AbortSignal.fromJS(signal_)) |signal| {
//Keep it alive
signal_.ensureStillAlive();
diff --git a/test/js/web/request/request.test.ts b/test/js/web/request/request.test.ts
new file mode 100644
index 000000000..ac6008eb4
--- /dev/null
+++ b/test/js/web/request/request.test.ts
@@ -0,0 +1,37 @@
+import { test, expect } from "bun:test";
+
+test("request can receive undefined signal", async () => {
+ const request = new Request("http://example.com/", {
+ method: "POST",
+ headers: {
+ "Content-Type": "text/bun;charset=utf-8",
+ },
+ body: "bun",
+ signal: undefined,
+ });
+ expect(request.method).toBe("POST");
+ // @ts-ignore
+ const clone = new Request(request);
+ expect(clone.method).toBe("POST");
+ expect(clone.headers.get("content-type")).toBe("text/bun;charset=utf-8");
+ expect(await request.text()).toBe("bun");
+ expect(await clone.text()).toBe("bun");
+});
+
+test("request can receive null signal", async () => {
+ const request = new Request("http://example.com/", {
+ method: "POST",
+ headers: {
+ "Content-Type": "text/bun;charset=utf-8",
+ },
+ body: "bun",
+ signal: null,
+ });
+ expect(request.method).toBe("POST");
+ // @ts-ignore
+ const clone = new Request(request);
+ expect(clone.method).toBe("POST");
+ expect(clone.headers.get("content-type")).toBe("text/bun;charset=utf-8");
+ expect(await request.text()).toBe("bun");
+ expect(await clone.text()).toBe("bun");
+});