// before, with Redux Thunk
promise: new Promise((resolve, reject) => {
value => (action, dispatch) => {
dispatch(someSuccessHandlerActionCreator());
reason => (action, dispatch) => {
dispatch(someErrorHandlerActionCreator());
// after, with Redux Thunk
return (dispatch, getState) => {
payload: Promise.resolve('foo')
console.log(value); // => 'foo'
console.log(action.type); // => 'FOO_FULFILLED'
dispatch(someSuccessHandlerActionCreator());
({ reason, action }) => {
dispatch(someErrorHandlerActionCreator());