 
         isLoading = true
         _load(request: request)
+    }
+
+    public func load(_ publisher: AnyPublisher<ImageResponse, ImagePipeline.Error>) {
+        _reset()
+
+        cancellable = publisher.sink(receiveCompletion: { [weak self] completion in
+            guard let self = self else { return }
+            self.isLoading = false
+            switch completion {
+            case .finished:
+                if let response = self.lastResponse {
+                    self.result = .success(response)
+                } // else was cancelled, do nothing
+            case .failure(let error):
+                self.result = .failure(error)
+            }
+        }, receiveValue: { [weak self] response in
+            guard let self = self else { return }
+            self.lastResponse = response
+            self.image = response.image
+        })
+
+        isLoading = true
     }
 
     private func _load(request: ImageRequest) {

        #endif
    }
}

    public var pipeline: ImagePipeline = .shared
    private var task: ImageTask?

    // publisher support
    private var lastResponse: ImageResponse?
    private var cancellable: AnyCancellable?

    deinit {
        cancel()
    }
