From 3f76e5764c04b040c7935d83fe29416b0851666b Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Tue, 25 Nov 2025 10:39:10 +0100 Subject: [PATCH] add timeout for sendToExtension --- playwriter/src/extension/cdp-relay.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/playwriter/src/extension/cdp-relay.ts b/playwriter/src/extension/cdp-relay.ts index 2ecc10e..1854fdd 100644 --- a/playwriter/src/extension/cdp-relay.ts +++ b/playwriter/src/extension/cdp-relay.ts @@ -137,7 +137,7 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. } } - async function sendToExtension({ method, params }: { method: string; params?: any }) { + async function sendToExtension({ method, params, timeout = 30000 }: { method: string; params?: any; timeout?: number }) { if (!extensionWs) { throw new Error('Extension not connected') } @@ -148,7 +148,21 @@ export async function startPlayWriterCDPRelayServer({ port = 19988, host = '127. extensionWs.send(JSON.stringify(message)) return new Promise((resolve, reject) => { - extensionPendingRequests.set(id, { resolve, reject }) + const timeoutId = setTimeout(() => { + extensionPendingRequests.delete(id) + reject(new Error(`Extension request timeout after ${timeout}ms: ${method}`)) + }, timeout) + + extensionPendingRequests.set(id, { + resolve: (result) => { + clearTimeout(timeoutId) + resolve(result) + }, + reject: (error) => { + clearTimeout(timeoutId) + reject(error) + } + }) }) }