title: ObserveOn and SubscribeOn - where the work is being done
body: <p>Based on reading this question: <a href="https://stackoverflow.com/questions/7579237/whats-the-difference-between-subscribeon-and-observeon">What&#39;s the difference between SubscribeOn and ObserveOn</a></p>
  <p><code>ObserveOn</code> sets where the code is in the <code>Subscribe</code> handler is is executed:</p>
  <p><code>stream.Subscribe(_ =&gt; { // this code here });</code></p>
  <p>The <code>SubscribeOn</code> method sets which thread the setup of the stream is done on.</p>
  <p>I'm led to understand that if these aren't explicitly set, then the TaskPool is used.</p>
  <p>Now my question is, lets say I do something like this:</p>
  <pre><code>Observable.Interval(new Timespan(0, 0, 1))
            .Where(t =&gt; predicate(t))
            .SelectMany(t =&gt; lots_of(t))
            .ObserveOnDispatcher()
            .Subscribe(t =&gt; some_action(t));
  </code></pre>
  <p>Where are the <code>Where</code> <code>predicate</code> and <code>SelectMany</code> <code>lots_of</code> being executed, given that <code>some_action</code> is being executed on the dispatcher?</p>