     }
     
     public func cancelAll() {
+        self.operations.removeAll()
         self.exportQueue.cancelAllOperations()
+        self.currentAssetInRequesting?.cancelRequests()
         self.currentAVExportSession?.cancelExport()
-        self.operations.removeAll()
-        self.cancelAllRequests()
     }
     
     // MARK: - RequestID

    }
    
    // MARK: - Private
    
    private func cancelAllRequests() {
        objc_sync_enter(self)
        defer { objc_sync_exit(self) }
        
        for asset in self.currentAssetsInRequesting {
            asset.cancelRequests()
        }
        self.currentAssetsInRequesting.removeAll()
    }
    
    private func add(asset: DKAsset) {
        objc_sync_enter(self)
        defer { objc_sync_exit(self) }
        
        if self.operations[self.currentRequestID] == nil {
            asset.cancelRequests()
        } else {
            self.currentAssetsInRequesting.append(asset)
        }
    }
    
    private func removeAllRequests() {
        objc_sync_enter(self)
        defer { objc_sync_exit(self) }
        
        self.currentAssetsInRequesting.removeAll()
    }
    
    private func makeCancelledError() -> Error {
        return NSError(domain: DKImageAssetExporterDomain,

                asset.error = nil
                
                if let localTemporaryPath = asset.localTemporaryPath,
                    let subpaths = try? FileManager.default.contentsOfDirectory(at: localTemporaryPath,
                                                                                includingPropertiesForKeys: [],
                                                                                options: .skipsHiddenFiles),
                    subpaths.count > 0 {
                    asset.localTemporaryPath = subpaths[0]
                    asset.fileName = subpaths[0].lastPathComponent
                    exportCompletionBlock(asset, nil)
                    continue
                }
                
                self.exportAsset(with: asset, requestID: requestID, progress: { progress in
                    asset.progress = progress
                    
                    self.notify(with: #selector(DKImageAssetExporterObserver.exporterDidUpdateProgress(exporter:asset:)), object: self, objectTwo: asset)
