   /// - parameter value: the value to be validated
 
   public func validate(qos: DispatchQoS,
-                       predicate: @escaping (_ value: Success) throws -> Void) -> Deferred
+                       predicate: @escaping (_ value: Success) throws -> Void) -> Deferred<Success, Error>
   {
     let queue = DispatchQueue(label: "deferred", qos: qos)
     return validate(queue: queue, predicate: predicate)

  /// - parameter value: the value to be validated

  public func validate(qos: DispatchQoS,
                       predicate: @escaping (_ value: Success) -> Bool, message: String = "") -> Deferred
  {
    let queue = DispatchQueue(label: "deferred", qos: qos)
    return validate(queue: queue, predicate: predicate, message: message)

  ///
  /// - parameter queue: the dispatch queue upon the new `Deferred`'s notifications will be performed

  public func deferred(queue: DispatchQueue) -> Deferred<Wrapped, Invalidation>
  {
    switch self
    {
