                 onFulfilled.removeAll(keepCapacity: false)
                 onRejected.removeAll(keepCapacity: false)
             case .Failure(let reason):
+                self.result = result
                 state = .Rejected
                 for rejectHandler in onRejected {
                     rejectHandler(reason)

                        }
                        return result
                    }
                )
            }
        default:
            return

    private func transition(result: Result<T>) {
        switch state {
        case .Pending:
            switch result {
            case .Success(let value):
                self.result = result
                state = .Fulfilled
                for fulfillHandler in onFulfilled {
                    fulfillHandler(value.unwrap)
