title: RxJS retry entire chain
body: <p>I read images from a live stream and select a batch periodically.
  I then send them to the server for validation. A HTTP error will be thrown if any fail validation. If that occurs I want to get a new batch of images.</p>
  
  <pre><code>this.input.getImages()
    .throttleTime(500)
    .switchMap(image =&gt;
  
        new Observable&lt;{}&gt;(observer =&gt; {
          // Some operation
        })
        .map(i =&gt; ({ image, i }))
  
    ).filter(({ i }) =&gt;  {
      // some filtering
    })
    .map(({ image }) =&gt; image)
    .take(6)
    .bufferCount(6)
    .map(images =&gt;  // switch map??
      Observable.fromPromise(this.server.validate(images))
    )
    .retry(2)  // This only retrys the request, I want it to retry the whole chain (to get valid images)
    .subscribe(images =&gt; {
        console.log('All done')
      },
      err =&gt; {console.log(err)}
    )
  </code></pre>
  
  <p>The problem I'm having is that only the HTTP request gets retried since that is the new observable. There must be some way to encapsulate the beginning of the chain into a single Observable?</p>