     func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) {
 
         if #available(iOS 11.0, *) {
-            DispatchQueue.main.async {
-                if let schemeTask = self.taskMap[dataTask] as? WKURLSchemeTask {
-                    S1LogVerbose("Task Receive Data \(schemeTask.request) Running: \(dataTask.state == .running)")
-                    schemeTask.didReceive(data)
-                }
+            if let schemeTask = self.taskMap[dataTask] as? WKURLSchemeTask {
+                S1LogVerbose("Task Receive Data \(schemeTask.request) Running: \(dataTask.state == .running)")
+                schemeTask.didReceive(data)
             }
         }
 


    func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) {
        if #available(iOS 11.0, *) {
            DispatchQueue.main.async {
                if let schemeTask = self.taskMap[task as! URLSessionDataTask] as? WKURLSchemeTask {
                    if let error = error {
                        S1LogWarn("Task Fail \(schemeTask.request) \(error)")
                        schemeTask.didFailWithError(error)
                    } else {
                        S1LogDebug("Task Finish \(schemeTask.request)")
                        schemeTask.didFinish()
                    }

                    self.taskMap.removeValue(forKey: task as! URLSessionDataTask)
                }
            }
        }
    }

        )
    }()

    private let delegateQueue: OperationQueue = .main

    /// Value type of Dictionary is `Any` because `WKURLSchemeTask` is only available in iOS 11.
    private var taskMap = [URLSessionDataTask: Any]()

    public init(name: String) {
        self.name = name

        super.init()
    }
