title: Rx.net behavior changing (possibly violating implicit Reactive contract) when using 2nd SubscribeOn
body: <p>I'm trying to understand the changing behavior when I uncomment the 2nd SubscribeOn.</p>
  
  <p>In this case, I hit the line throwing exception.</p>
  
  <p>Can someone provide me with an answer - if it is intended behavior and why?</p>
  
  <p>Without 2nd SubscribeOn it takes 30+ seconds to finish (and that's good).
  With - it hits the line with an exception after 2 seconds of run.</p>
  
  <pre><code>    [TestMethod]
      public void AsyncObservable_NonReentrant()
      {
          int tester = 0;
          bool finished = false;
          Observable.Generate(
                  0,
                  i =&gt; i &lt; 5,
                  i =&gt; i+1,
                  i =&gt; i,
                  _ =&gt; TimeSpan.FromSeconds(1)
              )
              .SubscribeOn(ThreadPoolScheduler.Instance)
              .Finally(()=&gt;finished = true)
              .Select(_ =&gt;
              {
                  Interlocked.Increment(ref tester);
                  if (tester &gt; 1)
                      throw new InvalidOperationException();
                  return Observable
                         .Repeat(1, 5)
                         .Window(3)
                         .Finally(()=&gt;Interlocked.Decrement(ref tester))
                         /*.SubscribeOn(ThreadPoolScheduler.Instance)*/;
              })
              .Concat()
              .Subscribe(__ =&gt;
              {
                  Thread.Sleep(3000);
              });
          while (!finished)
              Thread.Sleep(100);
      }
  </code></pre>