           let download = delegate?.download(for: requestUrl),
           let image = UIImage(data: download.data), error == nil else { return }
     url = requestUrl
-    delegate?.completion(for: requestUrl)?(image)
+    delegate?.completions(for: requestUrl)?.forEach { completion in
+      completion(image)
+    }
   }
 
 }

      let task: URLSessionDataTask
      if let download = downloads[url] {
        task = download.task
      } else {
        let newTask = session.dataTask(with: url)
        let download = Download(task: newTask, progress: progress, completion: completion, data: Data())


  let task: URLSessionDataTask
  let progress: DownloadProgress?
  var completions: [DownloadCompletion]
  var data: Data

  init(task: URLSessionDataTask, progress: DownloadProgress?, completion: @escaping DownloadCompletion,
       data: Data) {
    self.task = task
    self.progress = progress
    self.completions = [completion]
    self.data = data
  }

