      
      - parameter handler: A handler that will be called when the task completes
      */
-    func addCompletion(handler: DownloadCompletionHandler)
+    func addCompletion(handler: @escaping DownloadCompletionHandler)
     
     /// The request that was used to create this task, this will be a duplicate of `request` but with additional download specific stuff added
     var downloadRequest: DownloadRequestType { get }

     
     - parameter handler: A handler that will be called when the task completes
     */
    func addCompletion(handler: CompletionHandler)
    
    /// The underlying system data task. Since `URLSessionDataTask` is a superclass of `URLSessionUploadTask`, this property and `uploadTask` may point to the same task. `task` will also point to the same task as this
    var dataTask: URLSessionDataTask { get }

     
     - parameter handler: A handler that will be called after `uploadProgress` changes.
     */
    func addUploadProgress(handler: @escaping BytesProgressHandler)
    
    /**
     Add a handler to be notified when the task is complete
