title: RxJs: poll until interval done or correct data received
body: <p>How do i execute the following scenario in the browser with RxJs:</p>
  
  <ul>
  <li>submit data to queue for processing</li>
  <li>get back the job id</li>
  <li>poll another endpoint every 1s until result is available or 60seconds have passed(then fail)</li>
  </ul>
  
  <p>Intermediate solution that i've come up with:</p>
  
  <pre><code> Rx.Observable
      .fromPromise(submitJobToQueue(jobData))
      .flatMap(jobQueueData =&gt; 
        Rx.Observable
              .interval(1000)
              .delay(5000)
              .map(_ =&gt; jobQueueData.jobId)
              .take(55)
      )
      .flatMap(jobId =&gt; Rx.Observable.fromPromise(pollQueueForResult(jobId)))
      .filter(result =&gt; result.completed)
      .subscribe(
        result =&gt; console.log('Result', result),
        error =&gt;  console.log('Error', error)
      );
  </code></pre>
  
  <ol>
  <li>Is there a way without intermediate variables to stop the timer once the data arrives or error occurs? I now i could introduce new observable and then use <code>takeUntil</code></li>
  <li>Is <code>flatMap</code> usage here semantically correct? Maybe this whole thing should be rewritten and not chained with <code>flatMap</code> ?</li>
  </ol>