 
 }
 
+@discardableResult
 public func await<A>(_ future: Future<A>) throws -> A {
   return try future.await()
 }

    }
  }

  public func timeout(after seconds: Double) -> Self {
    // Consider 0 as no timeout
    guard seconds > 0 else {

   
   Returns: the value the future resolved to
   */
  @discardableResult
  public func await() throws -> A {
    let semaphore = DispatchSemaphore(value: 0)
    self.finally(on: queue) { semaphore.signal() }
