 ///
 /// A closure supplied to the `notify` method will be called after the `Deferred` has become determined.
 
-open // would prefer "public", but an "open" class can only descend from another "open" class.
-class Deferred<Value>
+open class Deferred<Value>
 {
   fileprivate let queue: DispatchQueue
 

  ///
  /// - parameter task:  the closure to be enqueued

  public func notify(qos: DispatchQoS? = nil, task: @escaping (Result<Value>) -> Void)
  {
    var c = resultp.load(order: .acquire)
    if c == nil

  /// - returns: whether the cancellation was performed successfully.

  @discardableResult
  open func cancel(_ reason: String = "") -> Bool
  {
    return determine(Result.error(DeferredError.canceled(reason)))
  }
