     @discardableResult
     public func loadData(with request: ImageRequestConvertible,
                          queue: DispatchQueue? = nil,
-                         completion: @escaping (Result<(data: Data, response: URLResponse?), ImagePipeline.Error>) -> Void) -> ImageTask {
+                         completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void) -> ImageTask {
         loadData(with: request, queue: queue, progress: nil, completion: completion)
     }
 

// Each task can be reuse of the same resource requested multiple times.

extension ImagePipeline {
    func makeTaskLoadImage(for request: ImageRequest) -> Task<ImageResponse, ImagePipeline.Error>.Publisher {
        decompressedImageTasks.publisherForKey(request.makeLoadKeyForFinalImage()) {
            TaskLoadImage(self, request)
        }
    }

    func makeTaskProcessImage(for request: ImageRequest) -> Task<ImageResponse, ImagePipeline.Error>.Publisher {
        request.processors.isEmpty ?
            makeTaskDecodeImage(for: request) : // No processing needed
            processedImageTasks.publisherForKey(request.makeLoadKeyForFinalImage()) {

            }
    }

    func makeTaskDecodeImage(for request: ImageRequest) -> Task<ImageResponse, Error>.Publisher {
        originalImageTasks.publisherForKey(request.makeLoadKeyForOriginalImage()) {
            TaskDecodeImage(self, request)
        }
    }

    func makeTaskLoadImageData(for request: ImageRequest) -> Task<(Data, URLResponse?), Error>.Publisher {
        originalImageDataTasks.publisherForKey(request.makeLoadKeyForOriginalImage()) {
            TaskLoadImageData(self, request)
        }
