Skip to content

Commit 50342e0

Browse files
committed
fix(browser): await shared relay init promise during startup
1 parent 1d36cbb commit 50342e0

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/browser/extension-relay.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,13 @@ export async function ensureChromeExtensionRelayServer(opts: {
259259
rejectInit = reject;
260260
});
261261
relayInitByPort.set(info.port, initPromise);
262+
const settleInit = async (): Promise<ChromeExtensionRelayServer> => {
263+
try {
264+
return await initPromise;
265+
} finally {
266+
relayInitByPort.delete(info.port);
267+
}
268+
};
262269

263270
let extensionWs: WebSocket | null = null;
264271
const cdpClients = new Set<WebSocket>();
@@ -797,13 +804,11 @@ export async function ensureChromeExtensionRelayServer(opts: {
797804
},
798805
};
799806
serversByPort.set(info.port, existingRelay);
800-
relayInitByPort.delete(info.port);
801807
resolveInit(existingRelay);
802-
return existingRelay;
808+
return await settleInit();
803809
}
804-
relayInitByPort.delete(info.port);
805810
rejectInit(err);
806-
throw err;
811+
return await settleInit();
807812
}
808813

809814
const addr = server.address() as AddressInfo | null;
@@ -840,9 +845,8 @@ export async function ensureChromeExtensionRelayServer(opts: {
840845
};
841846

842847
serversByPort.set(port, relay);
843-
relayInitByPort.delete(info.port);
844848
resolveInit(relay);
845-
return relay;
849+
return await settleInit();
846850
}
847851

848852
export async function stopChromeExtensionRelayServer(opts: { cdpUrl: string }): Promise<boolean> {

0 commit comments

Comments
 (0)