diff --git a/server/src/index.ts b/server/src/index.ts index 4d1fffa29..92d8a541a 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -608,22 +608,28 @@ app.get( if (chunk.toString().includes("MODULE_NOT_FOUND")) { // Server command not found, remove transports const message = "Command not found, transports removed"; - webAppTransport.send({ - jsonrpc: "2.0", - method: "notifications/message", - params: { - level: "emergency", - logger: "proxy", - data: { - message, + webAppTransport + .send({ + jsonrpc: "2.0", + method: "notifications/message", + params: { + level: "emergency", + logger: "proxy", + data: { + message, + }, }, - }, - }); - webAppTransport.close(); - serverTransport.close(); - webAppTransports.delete(webAppTransport.sessionId); - serverTransports.delete(webAppTransport.sessionId); - sessionHeaderHolders.delete(webAppTransport.sessionId); + }) + .catch(() => { + // SSE connection already closed, ignore + }) + .finally(() => { + webAppTransport.close(); + serverTransport.close(); + webAppTransports.delete(webAppTransport.sessionId); + serverTransports.delete(webAppTransport.sessionId); + sessionHeaderHolders.delete(webAppTransport.sessionId); + }); console.error(message); } else { // Inspect message and attempt to assign a RFC 5424 Syslog Protocol level @@ -658,17 +664,21 @@ app.get( } else { level = "info"; } - webAppTransport.send({ - jsonrpc: "2.0", - method: "notifications/message", - params: { - level, - logger: "stdio", - data: { - message, + webAppTransport + .send({ + jsonrpc: "2.0", + method: "notifications/message", + params: { + level, + logger: "stdio", + data: { + message, + }, }, - }, - }); + }) + .catch(() => { + // SSE connection already closed, ignore + }); } });