 }
 
 public class ImmediateFuture<T>: Future<T> {
+  override public var isCompleted: Bool {
+    return result != nil
+  }
+
   override private var futureName: String {
     return "ImmediateFuture"
   }


  static func dispatchAsync(group: Group, block: () -> Void) {
    dispatch_group_async(group, sharedQueue, block)
  }

  static func dispatchNotify(group: Group, block: () -> Void) {

  private var result: Try<T>?

  public var isCompleted: Bool {
    fatalError("must be overridden")
  }

  private var futureName: String {
