title: RXJS Wait for all observables in an array to complete (or error)
body: <p>I'm pushing observables into an array like such...</p>
  
  <pre><code>var tasks$ = [];
  tasks$.push(Observable.timer(1000));
  tasks$.push(Observable.timer(3000));
  tasks$.push(Observable.timer(10000));
  </code></pre>
  
  <p>I want an Observable that emits when all tasks$ have completed.  Keep in mind, in practice, tasks$ doesn't have a known number of Observables.</p>
  
  <p>I've tried <code>Observable.zip(tasks$).subscribe()</code> but this seems to fail in the event that there is only 1 task, and is leading me to believe that ZIP requires an even number of elements in order to work the way I would expect. </p>
  
  <p>I've tried <code>Observable.concat(tasks$).subscribe()</code> but the result of the concat operator just seems to be an array of observables... e.g. basically the same as the input.  You can't even call subscribe on it.</p>
  
  <p>In C# this would be akin to <code>Task.WhenAll()</code>. In ES6 promise it would be akin to <code>Promise.all()</code>.</p>
  
  <p>I've come across a number of SO questions but they all seem to deal with waiting on a known number of streams (e.g. mapping them together). </p>