title: Redux Saga: How to wait for spawn and call to complete without blocking parent call
body: <p>I'm trying to add a redux saga function but I can't get the chaining right</p>
  
  <pre><code>const randomDelay = () =&gt; parseInt(Math.random() * 500)
  const a = function*() {
     yield spawn(b)
     yield call(c)
  }
  const b = function*() {
     yield delay(randomDelay())
  }
  const c = function*() {
     yield delay(randomDelay())
  }
  const d = function*() {}
  </code></pre>
  
  <ul>
  <li>I want to call <code>a</code> which will spawn <code>b</code> and call <code>c</code>.  </li>
  <li>When <code>c</code> is complete I want <code>a</code> to become unblocked and complete.</li>
  <li>When <code>b</code> and <code>c</code> both complete I want to call <code>d</code></li>
  </ul>
  
  <p>From what I can tell there isn't a way to do this.  <code>all</code> or <code>fork</code> will block <code>a</code></p>
  
  <p>To get around this for now I have <code>c</code> called first and a combo of <code>b</code> and <code>d</code> spawned after but that means <code>b</code> and <code>c</code> can't be running at the same time.</p>