title: is there any way to cancel rxjs's concatMap's inner observable?
body: <p>I'm using angular 2 to create a file upload queue with chunk upload support.</p>
  
  <p>here is the basic idea, I have a <code>added</code> EventEmitter fires when a validated file selected, then in ngOnInit I listen to this <code>added</code> event and map to a bunch of uploads like this:</p>
  
  <pre><code>this.start
  .concatMap(item =&gt; item.file.size &gt; this.chunkSize ? this.uploadChunks(item) : this.upload(item),
      (outer: QueueFile, inner: Response) =&gt; ({item: outer, response: inner}))
  .subscribe((x: any) =&gt; this.uploadSucceed(x.item, x.response),
      (x: any) =&gt; this.uploadFailed(x.item, x.resp));
  </code></pre>
  
  <p>and the <code>uploadChunks</code> function like this:</p>
  
  <pre><code>private uploadChunks(item: QueueFile) {
      return Observable.range(0, Math.ceil(item.file.size / this.chunkSize), Scheduler.queue)
          .map(x =&gt; [x * this.chunkSize, Math.min(item.file.size, (x + 1) * this.chunkSize)])
          .map(x =&gt; this.createChunkFormData(x[0], x[1], item))
          .concatMap(data =&gt; this.http.post(this.url, data));
  }
  </code></pre>
  
  <p>and I want to provide a cancel upload of chunks, but in this design, it seems there is no way to stop the chunks upload.</p>
  
  <p>If I record the subscription to the start event, and unsubscribe it, then the whole queue will stops uploading.</p>
  
  <p>Is it anyway to stop the uploadChunks? or maybe my method is totally wrong, if that so, how can I do this with rxjs?</p>