diff --git a/packages/loot-core/src/platform/client/fetch/index.browser.js b/packages/loot-core/src/platform/client/fetch/index.browser.js
index 6b39f14a886ea27045e647f7979edbf965d09b3a..2cb04ba842278752f7c1e01737385fcf2fa4fa80 100644
--- a/packages/loot-core/src/platform/client/fetch/index.browser.js
+++ b/packages/loot-core/src/platform/client/fetch/index.browser.js
@@ -88,7 +88,7 @@ function connectWorker(worker, onOpen, onError) {
       // Send any messages that were queued while closed
       if (messageQueue.length > 0) {
         messageQueue.forEach(msg => worker.postMessage(msg));
-        messageQueue = [];
+        messageQueue = null;
       }
 
       onOpen();
@@ -138,22 +138,17 @@ module.exports.send = function send(name, args, { catchErrors = false } = {}) {
   return new Promise((resolve, reject) => {
     uuid.v4().then(id => {
       replyHandlers.set(id, { resolve, reject });
-      if (globalWorker) {
-        globalWorker.postMessage({
-          id,
-          name,
-          args,
-          undoTag: undo.snapshot(),
-          catchErrors,
-        });
+      let message = {
+        id,
+        name,
+        args,
+        undoTag: undo.snapshot(),
+        catchErrors,
+      };
+      if (messageQueue) {
+        messageQueue.push(message);
       } else {
-        messageQueue.push({
-          id,
-          name,
-          args,
-          undoTag: undo.snapshot(),
-          catchErrors,
-        });
+        globalWorker.postMessage(message);
       }
     });
   });