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

      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())

    return downloads[url]?.progress
  }

  func completions(for url: URL) -> [DownloadCompletion]? {
    return downloads[url]?.completions
  }

  func clearDownload(for url: URL?) {
