1
0
Fork 0
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:
Leo Kettmeir 2021-12-20 11:36:46 +01:00 committed by GitHub
parent 0888ba7a8d
commit ef95d7b1e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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],