mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
30 lines
913 B
TypeScript
30 lines
913 B
TypeScript
import { sleep } from "bun";
|
|
import { expect, test } from "bun:test";
|
|
|
|
test("HTTPResponseSink displays correct message", async () => {
|
|
let leakedCtrl: any;
|
|
using server = Bun.serve({
|
|
port: 0,
|
|
async fetch(req) {
|
|
return new Response(
|
|
new ReadableStream({
|
|
type: "direct",
|
|
async pull(ctrl) {
|
|
await ctrl.write("a");
|
|
await sleep(10);
|
|
await ctrl.write("b");
|
|
ctrl.flush();
|
|
leakedCtrl = ctrl;
|
|
},
|
|
} as any),
|
|
);
|
|
},
|
|
});
|
|
let response = await fetch(server.url);
|
|
expect(await response.text()).toBe("ab");
|
|
expect(() => leakedCtrl.write("c")).toThrow(
|
|
'This HTTPResponseSink has already been closed. A "direct" ReadableStream terminates its underlying socket once `async pull()` returns.',
|
|
);
|
|
expect(() => leakedCtrl.write.call({}, "c")).toThrow("Expected HTTPResponseSink");
|
|
});
|