From 80e855c446df31f9c7a976452ff90bffb28c59b1 Mon Sep 17 00:00:00 2001 From: cirospaciari Date: Wed, 10 Apr 2024 17:39:44 -0300 Subject: [PATCH] one more test --- test/js/bun/net/socket.test.ts | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/js/bun/net/socket.test.ts b/test/js/bun/net/socket.test.ts index ee5d73c1101836..c46a46b43950e3 100644 --- a/test/js/bun/net/socket.test.ts +++ b/test/js/bun/net/socket.test.ts @@ -314,3 +314,45 @@ it("it should not crash when getting a ReferenceError on client socket open", as server.stop(true); } }); + +it("it should not crash when returning a Error on client socket open", async () => { + const server = Bun.serve({ + port: 8080, + hostname: "localhost", + fetch() { + return new Response("Hello World"); + }, + }); + try { + const { resolve, reject, promise } = Promise.withResolvers(); + let client: Socket | null = null; + const timeout = setTimeout(() => { + client?.end(); + reject(new Error("Timeout")); + }, 1000); + client = await Bun.connect({ + port: server.port, + hostname: server.hostname, + socket: { + //@ts-ignore + open(socket) { + return new Error("CustomError"); + }, + error(socket, error) { + clearTimeout(timeout); + resolve(error); + }, + close(socket) { + // we need the close handler + resolve({ message: "Closed" }); + }, + data(socket, data) {}, + }, + }); + + const result: any = await promise; + expect(result?.message).toBe("CustomError"); + } finally { + server.stop(true); + } +});