From b7eed8409b88e38f314ef7fe5a26e92c250886aa Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 3 Dec 2025 20:02:51 +0700 Subject: [PATCH] fix: handle promise rejections in claude-agent fire-and-forget patterns MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed two fire-and-forget promise patterns that could cause unhandled rejections: - interruptActiveTurn() in requestCancel closure - now catches errors and logs warning - forwardPromptEvents() in stream method - now catches errors and logs to console Both now properly handle promise rejections to prevent Node.js process crashes. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../server/src/server/agent/providers/claude-agent.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/server/src/server/agent/providers/claude-agent.ts b/packages/server/src/server/agent/providers/claude-agent.ts index c1472aa4f..815a4acfe 100644 --- a/packages/server/src/server/agent/providers/claude-agent.ts +++ b/packages/server/src/server/agent/providers/claude-agent.ts @@ -319,7 +319,9 @@ class ClaudeAgentSession implements AgentSession { } cancelIssued = true; this.turnCancelRequested = true; - void this.interruptActiveTurn(); + this.interruptActiveTurn().catch((error) => { + console.warn("[ClaudeAgentSession] Failed to interrupt during cancel:", error); + }); queue.end(); }; this.cancelCurrentTurn = requestCancel; @@ -330,7 +332,9 @@ class ClaudeAgentSession implements AgentSession { this.historyPending = false; this.persistedHistory = []; } - void this.forwardPromptEvents(sdkMessage, queue); + this.forwardPromptEvents(sdkMessage, queue).catch((error) => { + console.error("[ClaudeAgentSession] Unexpected error in forwardPromptEvents:", error); + }); try { for await (const event of queue) {