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<void> = 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,
+        });
+      }
+    })();
   };
 }