From 09461f8a76806cc0eec2e5dbd105bd46f27437e5 Mon Sep 17 00:00:00 2001 From: Dmitry Gozman Date: Tue, 26 Jul 2022 18:42:02 -0700 Subject: [PATCH] fix(driver): make sure IpcTransport messages arrive in different tasks (#15978) --- packages/playwright-core/src/protocol/transport.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/playwright-core/src/protocol/transport.ts b/packages/playwright-core/src/protocol/transport.ts index 8026f00c21..92991af7ae 100644 --- a/packages/playwright-core/src/protocol/transport.ts +++ b/packages/playwright-core/src/protocol/transport.ts @@ -106,17 +106,18 @@ export class PipeTransport { export class IpcTransport { private _process: NodeJS.Process | ChildProcess; + private _waitForNextTask = makeWaitForNextTask(); onmessage?: (message: string) => void; onclose?: () => void; constructor(process: NodeJS.Process | ChildProcess) { this._process = process; - this._process.on('message', message => { + this._process.on('message', message => this._waitForNextTask(() => { if (message === '') this.onclose?.(); else this.onmessage?.(message); - }); + })); } send(message: string) {