 
     /// Stops all preheating tasks.
     public func stopPreheating() {
-        syncQueue.async {
+        queue.async {
             self.tasks.forEach { $0.cts?.cancel() }
             self.tasks.removeAll()
         }

            let cts = CancellationTokenSource()
            scheduler.execute(token: cts.token) { [weak self] finish in
                self?.loader.loadImage(with: task.request, token: cts.token).completion { _ in
                    self?.syncQueue.async {
                        if let idx = self?.tasks.index(where: { task === $0 }) {
                            self?.tasks.remove(at: idx)
                        }

    /// for the given requests. At any time afterward, you can create tasks
    /// for individual images with equivalent requests.
    public func startPreheating(for requests: [Request]) {
        queue.async {
            requests.forEach { self.startPreheating(for: $0) }
        }
    }
