         self.init(configuration: configuration, delegate: delegate)
     }
 
-    /// Invalidates the pipeline and cancels all outstanding tasks.
+    /// Invalidates the pipeline and cancels all outstanding tasks. No new
+    /// requests can be started.
     func invalidate() {
         queue.async {
             guard !self.isInvalidated else { return }

        (self as SendEventProtocol)._send(event, task)
    }

    @available(*, deprecated, message: "Please use ImagePipelineDelegate")
    func _send(_ event: ImageTaskEvent, _ task: ImageTask) {
        observer?.pipeline(self, imageTask: task, didReceiveEvent: event)


    // MARK: - Loading Image Data

    /// Loads the image data for the given request. The data doesn't get decoded
    /// or processed in any other way.
    @discardableResult public func loadData(
        with request: ImageRequestConvertible,
        completion: @escaping (Result<(data: Data, response: URLResponse?), Error>) -> Void
