diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2024-11-12 17:10:07 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-12 17:10:07 +0530 |
commit | 3b99f6833cd3354da20785fdcf01e7409e610175 (patch) | |
tree | 8539e551c52b880d704d27e26a4bb5b0191515e6 | |
parent | c3c2b379669b17e5fdcbe5e62662404ca22c71c6 (diff) |
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
-rw-r--r-- | ext/websocket/01_websocket.js | 6 | ||||
-rw-r--r-- | 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<void>(); const ws = new WebSocket("ws://localhost:2121"); let err = false; - ws.onerror = () => { + ws.onerror = (e) => { + assert("error" in e); err = true; }; ws.onclose = () => { |