In pure Redux you would usually just create sibling success and error action types to be handled by the same reducer. Your components can then react to both of these cases based on what props are set from your state (usually either data or something set on error). How you handle side effects or async processes is another concern but in every case those "spin offs" should eventually dispatch the success data or error back into Redux.