From 3b99f6833cd3354da20785fdcf01e7409e610175 Mon Sep 17 00:00:00 2001 From: Divy Srivastava Date: Tue, 12 Nov 2024 17:10:07 +0530 Subject: fix(ext/websocket): initialize `error` attribute of WebSocket ErrorEvent (#26796) Fixes https://github.com/denoland/deno/issues/26216 Not required by the spec but Discord.js depends on it, see https://github.com/denoland/deno/issues/26216#issuecomment-2466060306 --- ext/websocket/01_websocket.js | 6 +++++- tests/unit/websocket_test.ts | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js index 58f477310..468999b95 100644 --- a/ext/websocket/01_websocket.js +++ b/ext/websocket/01_websocket.js @@ -28,6 +28,7 @@ const { ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeSome, + Error, ErrorPrototypeToString, ObjectDefineProperties, ObjectPrototypeIsPrototypeOf, @@ -488,8 +489,11 @@ class WebSocket extends EventTarget { /* error */ this[_readyState] = CLOSED; + const message = op_ws_get_error(rid); + const error = new Error(message); const errorEv = new ErrorEvent("error", { - message: op_ws_get_error(rid), + error, + message, }); this.dispatchEvent(errorEv); diff --git a/tests/unit/websocket_test.ts b/tests/unit/websocket_test.ts index 7db876b17..3aafe8da2 100644 --- a/tests/unit/websocket_test.ts +++ b/tests/unit/websocket_test.ts @@ -453,7 +453,8 @@ Deno.test("invalid server", async () => { const { promise, resolve } = Promise.withResolvers(); const ws = new WebSocket("ws://localhost:2121"); let err = false; - ws.onerror = () => { + ws.onerror = (e) => { + assert("error" in e); err = true; }; ws.onclose = () => { -- cgit v1.2.3