         didSet {
             switch unsafeStatus {
             case .Fulfilled(let result):
-                for callback in succeededCallbacks {
-                    callback(result)
+                for (callback, queue) in succeededCallbacks {
+                    Promise.dispatch(on: queue) {
+                        callback(result)
+                    }
                 }
                 self.detach()
                 
             case .Rejected(let error):
-                for callback in failedCallbacks {
-                    callback(error)
+                for (callback, queue) in failedCallbacks {
+                    Promise.dispatch(on: queue) {
+                        callback(error)
+                    }
                 }
                 self.detach()
                 

    public typealias FailedCallback = (ErrorType) -> Void
    
    /// The array containing all failure callbacks.
    private var failedCallbacks: [FailedCallback] = []
    
    // MARK: - Then
    

    public typealias SucceededCallback = (Value) -> Void
    
    /// The array containing all success callbacks.
    private var succeededCallbacks: [(SucceededCallback, dispatch_queue_t?)] = []
    
    /**
     The alias for the failure callbacks of the promise.
