     dispatch_async(mutateQueue) {
       precondition(self._value == nil, "Future cannot complete more than once")
       self._value = x
-      for handler in self.onCompleteHandlers { handler(success(x)) }
+      for handler in self.onCompleteHandlers { handler(x) }
       dispatch_group_leave(self.resultReadyGroup)
     }
   }


public class Future<T> {
  private var _value: T?
  var onCompleteHandlers: [(Result<T> -> ())] = []

  // The resultQueue is used to read the result. It begins suspended
  // and is resumed once a result exists.

    return isCompleted
  }

  public func onComplete(f: T -> ()) {
    dispatch_async(mutateQueue) {
      self.onCompleteHandlers += [f]
    }
