diff --git a/web/shared-worker/worker/shared-worker.js b/web/shared-worker/worker/shared-worker.js --- a/web/shared-worker/worker/shared-worker.js +++ b/web/shared-worker/worker/shared-worker.js @@ -297,6 +297,8 @@ return result; } +let currentlyProcessedMessage: ?Promise = null; + function connectHandler(event: SharedWorkerMessageEvent) { if (!event.ports.length) { return; @@ -314,18 +316,21 @@ }); } - try { - const result = await processAppRequest(message); - port.postMessage({ - id, - message: result, - }); - } catch (e) { - port.postMessage({ - id, - error: e.message, - }); - } + currentlyProcessedMessage = (async () => { + await currentlyProcessedMessage; + try { + const result = await processAppRequest(message); + port.postMessage({ + id, + message: result, + }); + } catch (e) { + port.postMessage({ + id, + error: e.message, + }); + } + })(); }; }