     }
     
     private func processImage(image: Image?, error: ErrorType?, forImageTask imageTask: ImageTask) {
-        if let image = image, processor = self.processorForRequest(imageTask.request) {
+        if let image = image, processor = self.processorForRequest(imageTask.request) where self.delegate.imageLoader(self, shouldProcessImage: image) {
             let operation = NSBlockOperation { [weak self] in
                 self?.imageTask(imageTask, didCompleteWithImage: processor.processImage(image), error: error)
             }

    }
}

// MARK: - ImageLoader

/** Implements image loading using objects conforming to ImageDataLoading, ImageDecoding and ImageProcessing protocols. Reuses data tasks for multiple equivalent image tasks.

public class ImageLoader: ImageLoading {
    public weak var manager: ImageLoadingManager?
    public let configuration: ImageLoaderConfiguration
    public let delegate: ImageLoaderDelegate
    
    private var dataLoader: ImageDataLoading {
        return self.configuration.dataLoader
