   /// - parameter µs: a number of microseconds
   /// - returns: a `Deferred` reference
 
-  public func timeout(µs µs: Int) -> Deferred
-  {
-    return timeout(ns: µs*1000)
+  public func timeout(µs µs: Int, reason: String = DefaultTimeoutMessage) -> Deferred
+  {
+    return timeout(ns: µs*1000, reason: reason)
   }
 
   /// Return a `Deferred` whose determination will occur at most `ms` milliseconds from the time of evaluation.

      let timeout = dispatch_time(DISPATCH_TIME_NOW, Int64(ns))

      let perishable = map(queue) { $0 }
      dispatch_after(timeout, queue) { perishable.cancel("Operation timed out") }
      return perishable
    }

    return Deferred(error: DeferredError.Canceled("Operation timed out"))
  }
}



// MARK: maximum time until a `Deferred` becomes determined

private let DefaultTimeoutMessage = "Operation timed out"

extension Deferred
{
  /// Return a `Deferred` whose determination will occur at most `µs` microseconds from the time of evaluation.
