title: Zipping value with corresponging flatMap result
body: <p>Let's say I have a stream of files <code>filesStream</code> and a function <code>uploadFile</code> which returns a stream of one value (Rx.Observable.fromPromise(...)). Files on the stream can be uploaded via simple <code>flatMap</code>:</p>
  
  <pre><code>filesStream.flatMap(uploadFile)
  </code></pre>
  
  <p>What I need is to zip files from <code>filesStream</code> with corresponding responses from <code>uploadFile</code>:</p>
  
  <pre><code>zippedStream.subscribe(
      (file, response) =&gt; console.log("File " + file.name + " uploaded: " + response.message)
  )
  </code></pre>
  
  <p>I've come up with a quite messy approach which does work</p>
  
  <pre><code>var zipppedStream = filesStream.flatMap(
      (file) =&gt; uploadFile(file).zip(Rx.Observable.just(file), (r, f) =&gt; [r, f])
  )
  </code></pre>
  
  <p>But I don't really like it since I need to unpack the two-valued array in <code>subscribe</code> and it generally looks heavy.
  Is it how you do it or I'm missing something?</p>