             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?.addObserver(self, forKeyPath: #keyPath(URLSessionTask.countOfBytesReceived), options: .new, context: nil)
+            task?.addObserver(self, forKeyPath: #keyPath(URLSessionTask.countOfBytesSent), options: .new, context: nil)
             
-            task.resume()
+            task?.resume()
         }
         
         semaphore.wait()


    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        guard let keyPath = keyPath else {return}

        switch keyPath {
        case (#keyPath(URLSessionTask.countOfBytesReceived)):

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

