     return tbd
   }
 
-  public func deferredDownloadTask(with url: URL) -> DeferredURLSessionTask<(URL, FileHandle, HTTPURLResponse)>
-  {
-    return deferredDownloadTask(with: URLRequest(url: url))
-  }
-
-  public func deferredDownloadTask(withResumeData data: Data) -> DeferredURLSessionTask<(URL, FileHandle, HTTPURLResponse)>
-  {
-    let tbd = DeferredDownloadTask<(URL, FileHandle, HTTPURLResponse)>()
+  public func deferredDownloadTask(qos: DispatchQoS = DispatchQoS.current ?? .utility,
+                                   with url: URL) -> DeferredURLSessionTask<(URL, FileHandle, HTTPURLResponse)>
+  {
+    return deferredDownloadTask(qos: qos, with: URLRequest(url: url))
+  }
+
+  public func deferredDownloadTask(qos: DispatchQoS = DispatchQoS.current ?? .utility,
+                                   withResumeData data: Data) -> DeferredURLSessionTask<(URL, FileHandle, HTTPURLResponse)>
+  {
+    let tbd = DeferredDownloadTask<(URL, FileHandle, HTTPURLResponse)>(qos: qos)
 
 #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
     let task = self.downloadTask(withResumeData: data, completionHandler: downloadCompletion(tbd))

{
  private weak var sessionTask: URLSessionTask? = nil

  init() { super.init(queue: DispatchQueue.global()) }

  @discardableResult
  override public func cancel(_ reason: String = "") -> Bool

    }
  }

  public func deferredDataTask(qos: DispatchQoS = DispatchQoS.current ?? .utility,
                               with request: URLRequest) -> DeferredURLSessionTask<(Data, HTTPURLResponse)>
  {
    let tbd = DeferredURLSessionTask<(Data, HTTPURLResponse)>(qos: qos)

    let task = self.dataTask(with: request, completionHandler: dataCompletion(tbd))

