title: how to handle errors in redux observable?
body: <p>I have the following code:</p>
  
  <pre><code>export const myEpic = (action$, store) =&gt;
  action$.ofType("SOME_ACTION")
      .switchMap(action =&gt; {
          const {siteId, selectedProgramId} = action;
          const state = store.getState();
          const siteProgram$ = Observable.fromPromise(axios.get(`/url/${siteId}/programs`))
         .catch(error =&gt;{
              return Observable.of({
                  type: 'PROGRAM_FAILURE'
                  error
              });
          });
  
          const programType$ = Observable.fromPromise(axios.get('url2'))
         .catch(error =&gt;{
              return Observable.of({
                  type: "OTHER_FAILURE",
                  error
              });
          });
  </code></pre>
  
  <p>so far so good, when there is an error I catch it, and (maybe this is wrong) map it to an action (indicating something failed).</p>
  
  <p>now the question begins, I have another observable which is the result of the zip operator of the two observables from above:</p>
  
  <pre><code>        const siteProgram$result$ = Observable.zip(siteProgram$, programType$)
         .map(siteProgramsAndProgramTypes =&gt; siteProgramsAndProgramTypesToFinalSiteProgramsActionMapper(siteProgramsAndProgramTypes, siteId));
  </code></pre>
  
  <p>the problem is that I still get to this observable as if everything is fine.</p>
  
  <p>is there a way to "understand" that one of the "zipped" observables errored and then not get to the "next" of siteProgram$result$. 
  I think I am missing something trivial...</p>
  
  <p>I don't want to have to perform this check:</p>
  
  <pre><code>const siteProgramsAndProgramTypesToFinalSiteProgramsActionMapper = (siteProgramsAndProgramTypesArray, siteId) =&gt; {
  const [programsResponse, programTypesResponse] = siteProgramsAndProgramTypesArray;
  if (programsResponse.error || programTypesResponse.error){
      return {
          type: 'GENERAL_ERROR',
      };
  }
  </code></pre>
  
  <p>everytime I have an observable which is a result of an operator on other observable that might have errored.</p>
  
  <p>in pure rxjs (not in redux observable) I think I could subscribe to it passing it an object </p>
  
  <pre><code>{
      next: val =&gt; some logic,
      error: err =&gt; do what ever I want :) //this is what I am missing in redux observable,
      complete: () =&gt; some logic
  }
  
  // some more logic
  return Observable.concat(programType$Result$, selectedProgramId$, siteProgram$result$);
  </code></pre>
  
  <p>What is the right way to attack this in redux observable?</p>
  
  <p>Thanks.</p>