       return
     }
     
-    startupTimer = METTimer(queue: dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
-      NSLog("Startup timed out")
-      self.revertToLastKnownGoodVersion()
+    if startupTimer == nil {
+      startupTimer = METTimer(queue: dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
+        NSLog("Startup timed out")
+        self.revertToLastKnownGoodVersion()
+      }
     }
   }
 

      currentAssetBundle = pendingAssetBundle
      self.pendingAssetBundle = nil
    }

    startupTimer.startWithTimeInterval(startupTimeoutInterval)
  }
  
  // MARK: - Notifications

  /// Callback ID used to send a downloadFailure notification to JavaScript
  private var downloadFailureCallbackId: String?

  private var startupTimer: METTimer?

  // MARK: - Lifecycle

