 
         // Nil out the pointer to the url session
         self.urlSessionTask = nil
+        let surveyTask = self.surveyTask!
+        let bridgeSurvey = survey
+        let bridgeError = error
         
-        // load the survey into the task and then go forward
-        DispatchQueue.main.async { [weak self] in
-            self?.surveyTask!.load(survey: survey, error: error)
-            self?.goForward()
+        DispatchQueue.global(qos: .background).async { [weak self] in
+            // load the survey into the task and then go forward
+            surveyTask.load(survey: bridgeSurvey, error: bridgeError)
+            DispatchQueue.main.async {
+                self?.goForward()
+            }
         }
     }
     

    
    open func load(survey: SBBSurvey?, error: Error?) {
        // If there was an error or the survey is nil
        if survey == nil {
            let errorStep = ORKInstructionStep(identifier: "error")
            errorStep.title = Localization.localizedString("SBA_NETWORK_FAILURE_TITLE")
            errorStep.text = Localization.localizedString("SBA_NETWORK_FAILURE_MESSAGE")

            _error = error ?? NSError(domain: "SBASurveyTaskDomain",
                                      code: -1,
                                      userInfo: nil) as Error
        }
    }
    
