 
     override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
         guard let keyPath = keyPath else {return}
+        guard let task = task else {return}
 
         switch keyPath {
         case (#keyPath(URLSessionTask.countOfBytesReceived)):

            let urlRequest = UrlFabric.createWith(config: config)
            self.task = session.dataTask(with: urlRequest, completionHandler: completeon)
            
            task.addObserver(self, forKeyPath: #keyPath(URLSessionTask.countOfBytesReceived), options: .new, context: nil)
            task.addObserver(self, forKeyPath: #keyPath(URLSessionTask.countOfBytesSent), options: .new, context: nil)
            
            task.resume()
        }
        
        semaphore.wait()

internal final class SendTask: Operation {
    unowned private let delegate: RequestInstance
    private let config: RequestConfig
    private var task: URLSessionTask?
    private let id: Int
    private let reqId: Int64

