   /// - parameter task: the computation to be performed
 
   public static func Retrying(_ attempts: Int, qos: DispatchQoS = .current,
-                              task: @escaping () throws -> Deferred) -> Deferred
+                              task: @escaping () throws -> Deferred<Success, Error>) -> Deferred<Success, Error>
   {
     let queue = DispatchQueue(label: "retrying", qos: qos)
     return Deferred.Retrying(attempts, queue: queue, task: task)

  /// - parameter task: the computation to be performed

  public static func RetryTask(_ attempts: Int, queue: DispatchQueue,
                               task: @escaping () throws -> Success) -> Deferred
  {
    return Deferred.Retrying(attempts, queue: queue, task: { Deferred(queue: queue, task: task) })
  }

  /// Initialize a `Deferred` with a computation task to be performed in the background

  /// - parameter task: the computation to be performed

  public static func RetryTask(_ attempts: Int, qos: DispatchQoS = .current,
                               task: @escaping () throws -> Success) -> Deferred<Success, Error>
  {
    let queue = DispatchQueue(label: "deferred", qos: qos)
    return Deferred.RetryTask(attempts, queue: queue, task: task)
