mirror of
https://github.com/denoland/deno.git
synced 2024-11-22 15:06:54 -05:00
fix(ext/websocket): WebSocketStream don't error with "sending after closing" when closing (#13134)
This commit is contained in:
parent
0888ba7a8d
commit
ef95d7b1e9
1 changed files with 2 additions and 23 deletions
|
@ -60,7 +60,6 @@
|
|||
const _url = Symbol("[[url]]");
|
||||
const _connection = Symbol("[[connection]]");
|
||||
const _closed = Symbol("[[closed]]");
|
||||
const _closing = Symbol("[[closing]]");
|
||||
const _earlyClose = Symbol("[[earlyClose]]");
|
||||
class WebSocketStream {
|
||||
[_rid];
|
||||
|
@ -260,26 +259,8 @@
|
|||
}
|
||||
case "closed":
|
||||
case "close": {
|
||||
if (this[_closing]) {
|
||||
this[_closed].resolve(value);
|
||||
core.tryClose(this[_rid]);
|
||||
} else {
|
||||
PromisePrototypeThen(
|
||||
core.opAsync("op_ws_close", {
|
||||
rid: this[_rid],
|
||||
...value,
|
||||
}),
|
||||
() => {
|
||||
this[_closed].resolve(value);
|
||||
core.tryClose(this[_rid]);
|
||||
},
|
||||
(err) => {
|
||||
this[_closed].reject(err);
|
||||
controller.error(err);
|
||||
core.tryClose(this[_rid]);
|
||||
},
|
||||
);
|
||||
}
|
||||
this[_closed].resolve(value);
|
||||
core.tryClose(this[_rid]);
|
||||
break;
|
||||
}
|
||||
case "error": {
|
||||
|
@ -330,7 +311,6 @@
|
|||
}
|
||||
|
||||
[_earlyClose] = false;
|
||||
[_closing] = false;
|
||||
[_closed] = new Deferred();
|
||||
get closed() {
|
||||
webidl.assertBranded(this, WebSocketStream);
|
||||
|
@ -373,7 +353,6 @@
|
|||
if (this[_connection].state === "pending") {
|
||||
this[_earlyClose] = true;
|
||||
} else if (this[_closed].state === "pending") {
|
||||
this[_closing] = true;
|
||||
PromisePrototypeCatch(
|
||||
core.opAsync("op_ws_close", {
|
||||
rid: this[_rid],
|
||||
|
|
Loading…
Reference in a new issue