title: 'yield all' in Saga is not waiting for all the effects to complete
body: <p>I have a Saga like so (some pseudocodish).</p>
  
  <p>Saga1 calls an API. Based on the result, I need to call two further APIs. If all the APIs succeed, I call onSuccess, else onFailure.</p>
  
  <p>The code seems to almost work fine, but not quite. The problem I facing with <code>yield all</code> is that it considered saga2 and saga3 complete as soon as the first yield put was called (see comment in saga2/3). It didn't wait for the fetch yield to finish.</p>
  
  <p>I think it's partly due to my misunderstanding of what a "complete effect" means. But apart from that, I want yield all to wait until everything is done. I want any exceptions thrown by fetch in saga2/3 to be caught by catch in saga1.</p>
  
  <pre><code>saga1(action) {
  
      const { onSuccess, onFailure } = action.payload;
  
      try {
          yield fetch...
  
          if(response.some_condition) yield all([
              put(saga2()),
              put(saga3())
          ])
  
          onSuccess();
  
      }
      catch(e) {
          onFailure();
      }
  }
  
  saga2(action) {
  
      yield put(someaction()) // This yields
      yield fetch...
  }
  
  saga3(action) {
  
      yield put(someaction()) // This yield
      yield fetch...
  }
  </code></pre>
  
  <p>This code below is related to my comment below about catch not working</p>
  
  <pre><code>action1 () { // action2 is same
      try {
          yield fetch();
          yield put(FINISHED_1);
      }
      catch(e) {
          throw (e);
      }
  }
  
  saga1() {
      try {
          yield put(action1());
          yield put(action2());
  
          yield all([
              take(FINISHED_1),
              take(FINISHED_2),
          ])
          console.log("this doesn't print if exception in either action");
      }
      catch(e) {
          console.log("this doesn't print if exception in either action");
      }
      finally {
          console.log("this prints fine");
      }
  }
  </code></pre>