 
     // MARK: Callbacks
     public func onComplete(executionContext: ExecutionContext, complete: Try<T> -> Void) {
-        self.futureQueue.sync {
-            let futureComplete : InFuture = { future in
-                future.onComplete(executionContext, complete: complete)
-            }
-            self.saveCompletes.append(futureComplete)
-            for future in self.futures {
-                futureComplete(future)
-            }
+        let futureComplete : InFuture = { future in
+            future.onComplete(executionContext, complete: complete)
+        }
+        self.saveCompletes.append(futureComplete)
+        for future in self.futures {
+            futureComplete(future)
         }
     }
     


    // MARK: Callbacks
    public func onComplete(executionContext: ExecutionContext, complete: Try<T> -> Void) -> Void {
        self.futureQueue.sync {
            let savedCompletion : OnComplete = { result in
                executionContext.execute {
                    complete(result)
                }
            }
            if let result = self.result {
                savedCompletion(result)
            } else {
                self.saveCompletes.append(savedCompletion)
            }
        }
    }
    

    internal func complete(result: Try<T>) {
        let future = Future<T>()
        future.complete(result)
        self.addFuture(future)
        for complete in self.saveCompletes {
            complete(future)
        }
    }

