diff --git a/packages/cli/src/utils/client.ts b/packages/cli/src/utils/client.ts index e2fe2d02f..6f049151d 100644 --- a/packages/cli/src/utils/client.ts +++ b/packages/cli/src/utils/client.ts @@ -48,17 +48,26 @@ export async function connectToDaemon(options?: ConnectOptions): Promise | null = null const timeoutPromise = new Promise((_, reject) => { - setTimeout(() => { + timeoutHandle = setTimeout(() => { reject(new Error(`Connection timeout after ${timeout}ms`)) }, timeout) }) try { await Promise.race([connectPromise, timeoutPromise]) + // Clear the timeout so it doesn't keep the event loop alive + if (timeoutHandle) { + clearTimeout(timeoutHandle) + } client.subscribeAgentUpdates({ subscriptionId: `cli:${process.pid}` }) return client } catch (err) { + // Clear the timeout on error too + if (timeoutHandle) { + clearTimeout(timeoutHandle) + } await client.close().catch(() => {}) throw err }