From 35834d3dba287cd40a2fb098dd3dc00bdc1fa09c Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 10 Dec 2025 01:00:34 +0000 Subject: [PATCH] webchat: handle bind errors gracefully --- src/webchat/server.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/webchat/server.ts b/src/webchat/server.ts index bfa1a9eed..81ff95538 100644 --- a/src/webchat/server.ts +++ b/src/webchat/server.ts @@ -102,16 +102,23 @@ export async function startWebChatServer( notFound(res); }); - await new Promise((resolve, reject) => { - server.once("error", reject); - server.listen(port, "127.0.0.1", () => resolve()); - }).catch((err) => { + try { + await new Promise((resolve, reject) => { + const onError = (err: Error) => reject(err); + server.once("error", onError); + server.listen(port, "127.0.0.1", () => { + server.off("error", onError); + resolve(); + }); + }); + } catch (err) { const code = (err as NodeJS.ErrnoException).code; const msg = code ? `${code}: ${String(err)}` : String(err); logError( `webchat server failed to bind 127.0.0.1:${port} (${msg}); continuing without webchat`, ); - }); + return null; + } state = { server, port }; logDebug(`webchat server listening on 127.0.0.1:${port}`);