   }
 
   override public func get() -> Try<T> {
-    return condition.synchronized { wait in
+    return condition.synchronized { [unowned self] wait in
       while self.result == nil {
         wait()
       }

  }

  override public func onComplete(block: CompletionCallback) {
    let res: Try<T>? = condition.synchronized { _ in
      let res = self.result

      if res == nil {


  override public var isCompleted: Bool {
    var res = false
    FutureExecution.sync { [unowned self] in
      res = self.result != nil
    }
    return res
