         assert(self.value == nil, "Cannot complete Deferred more than once")
         assert(value != nil, "Result can't be nil")
         
-        dispatch_sync(callbacksManagingQueue) {
+        dispatch_async(callbacksManagingQueue) {
             
             self.value = value
             

    public func onComplete(ec: ExecutionContextType, _ c: Callback) -> Deferred {
        
        let callbackInContext: T -> Void = { result in
            dispatch_sync(self.callbacksExecutingQueue) {
                ec.execute {
                    c(result)
                }

            }
        }
        
        dispatch_async(callbacksManagingQueue) {
            if let result = self.value {
                callbackInContext(result)
            } else {
