     public private(set) var filter: IQImageLoaderFilter?
     public private(set) var targets: [IQImageLoaderTarget]
     public private(set) var workItem: DispatchWorkItem?
+    public private(set) var semaphore: DispatchSemaphore?
     public private(set) var query: IQApiQuery?
     
     public init(delegate: IQImageLoaderTaskDelegate, provider: QApiProvider, cache: QImageCache, url: URL, filter: IQImageLoaderFilter?, target: IQImageLoaderTarget) {

                } catch let error {
                    resultError = error
                }
            }
            self._finish(workItem: workItem, image: resultImage, error: resultError)
        })

    }
    
    public func cancel() {
        if let semaphore = self.semaphore {
            semaphore.signal()
            self.semaphore = nil
        }
        if let workItem = self.workItem {
            workItem.cancel()
            self.workItem = nil
