                 }
                 
                 let model = try decoder.decode(Model.self, from: data)
-                completion(.success(response, model))
+                self.queue.async { handler(.success(response, model)) }
             } catch {
-                completion(.failure(error))
+                self.queue.async { handler(.failure(error)) }
             }
         }.resume()
     }

    }
    
    // MARK: - Initialiser
    public init(appName: String? = nil, headers: [AnyHashable: Any]? = nil, timeout: TimeInterval = 60) {
        let configuration: URLSessionConfiguration = .ephemeral
        configuration.httpAdditionalHeaders = Constants.defaultHeaders
        configuration.userAgent(using: appName)

    public func execute<Model: Decodable>(request: URLRequest,
                                          with decoder: JSONDecoder = JSONDecoder(),
                                          handler: @escaping Handler<Model>) {
        #if os(Linux)
        // See https://gitlab.com/optimisedlabs/URLSessionRegression
        let session = URLSession(configuration: .default)
