summaryrefslogtreecommitdiff
path: root/ext/websocket/01_websocket.js
diff options
context:
space:
mode:
authorMatt Mastracci <matthew@mastracci.com>2023-06-29 07:24:01 -0600
committerGitHub <noreply@github.com>2023-06-29 07:24:01 -0600
commit93b3ff017078b2c1e993457ef43af6b52e715ba6 (patch)
tree856d339ae30fef01566d5ea919d4738c1e3fa65d /ext/websocket/01_websocket.js
parentb6253370cc8e430c575acd3fce0da44e057eb5b9 (diff)
fix(ext/websocket): Ensure that errors are available after async response returns (#19642)
Fixes the WPT tests that test w/invalid codes. Also explicitly ignoring some h2 tests to hopefully prevent flakes. The previous changes to WebSocketStream introduced a bug where the close errors were not made available if the `pull` method was re-entrant.
Diffstat (limited to 'ext/websocket/01_websocket.js')
-rw-r--r--ext/websocket/01_websocket.js5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/websocket/01_websocket.js b/ext/websocket/01_websocket.js
index e6b0053c6..50e110444 100644
--- a/ext/websocket/01_websocket.js
+++ b/ext/websocket/01_websocket.js
@@ -467,6 +467,7 @@ class WebSocket extends EventTarget {
default: {
/* close */
const code = kind;
+ const reason = code == 1005 ? "" : op_ws_get_error(rid);
const prevState = this[_readyState];
this[_readyState] = CLOSED;
clearTimeout(this[_idleTimeoutTimeout]);
@@ -476,7 +477,7 @@ class WebSocket extends EventTarget {
await op_ws_close(
rid,
code,
- op_ws_get_error(rid),
+ reason,
);
} catch {
// ignore failures
@@ -486,7 +487,7 @@ class WebSocket extends EventTarget {
const event = new CloseEvent("close", {
wasClean: true,
code: code,
- reason: op_ws_get_error(rid),
+ reason,
});
this.dispatchEvent(event);
core.tryClose(rid);