     internal func complete(result: Try<T>) {
         let future = Future<T>()
         future.complete(result)
-        self.futureQueue.sync {
-            self.addFuture(future)
-            for complete in self.saveCompletes {
-                complete(future)
-            }
+        self.addFuture(future)
+        for complete in self.saveCompletes {
+            complete(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)
            }
        }
    }
    


    typealias OnComplete        = Try<T> -> Void
    private var saveCompletes   = [OnComplete]()

    public var completed: Bool {
        return self.result != nil
    }
    
    public init() {
    }

    // MARK: Complete
    internal func complete(result: Try<T>) {
        if self.result != nil {
            SimpleFuturesException.futureCompleted.raise()
        }
        self.result = result
        for complete in self.saveCompletes {
            complete(result)
        }
        self.saveCompletes.removeAll()
    }

    internal func completeWith(future: Future<T>) {
