     func imageDownloader(_ downloader: ImageDownloader, didDownload image: Image, for url: URL, with response: URLResponse?)
     
     /**
-    Called when the `ImageDownloader` object starts to download an image from specified URL.
-     
-    - parameter downloader: The `ImageDownloader` object starts the downloading.
-    - parameter url:        URL of the original request.
-    - parameter response:   The request object of the downloading process.
-    */
-    func imageDownloader(_ downloader: ImageDownloader, willDownloadImageForURL url: URL, with request: URLRequest?)
-    
-    /**
     Check if a received HTTP status code is valid or not. 
     By default, a status code between 200 to 400 (excluded) is considered as valid.
     If an invalid code is received, the downloader will raise an .invalidStatusCode error.

}

extension ImageDownloaderDelegate {
    public func imageDownloader(_ downloader: ImageDownloader, didDownload image: Image, for url: URL, with response: URLResponse?) {}
    
    public func imageDownloader(_ downloader: ImageDownloader, willDownloadImageForURL url: URL, with request: URLRequest?) {}
    public func isValidStatusCode(_ code: Int, for downloader: ImageDownloader) -> Bool {
        return (200..<400).contains(code)
    }

        
        guard let url = task.originalRequest?.url else {
            return
        }
        
        if let downloader = downloadHolder {
            downloader.delegate?.imageDownloader(downloader, didFinishDownloadingImageForURL: url, with: task.response, error: error)
        }
        
        guard error == nil else {
