 
             // There can be pending animations. Run update again to clear them.
             let tabs = self.oldTabs ?? self.tabStore
-            self.updateTabsFrom(tabs, to: self.tabsToDisplay, on: {
+
+            self.completionBlocks.append {
                 if !update.inserts.isEmpty || !update.reloads.isEmpty {
                     self.tabDisplayer?.focusSelectedTab()
                 }
-            })
+            }
+            self.updateTabsFrom(tabs, to: self.tabsToDisplay)
         }
 
         // The actual update. Only animate the changes if no tabs have moved


        // If there are no changes. We have nothing to do
        if update.isEmpty {
            completion?()
            return
        }


        self.pendingUpdatesToTabs = newTabs // This var helps other mutations that might happen while updating.

        let onComplete: () -> Void = {
            performPendingCompletions()
            self.isUpdating = false
            self.pendingUpdatesToTabs = []
            // run completion blocks
