title: Why does Rx Observable.Subscribe block my thread?
body: <p>Hello there' I've tried out one of the 101 Rx examples:</p>
  
  <pre><code>    static IEnumerable&lt;int&gt; GenerateAlternatingFastAndSlowEvents()
      {
          int i = 0;
  
          while (true)
          {
              if (i &gt; 1000)
              {
                  yield break;
              }
              yield return i;
              Thread.Sleep(i++ % 10 &lt; 5 ? 500 : 1000);
          }
      }
  
      private static void Main()
      {
          var observable = GenerateAlternatingFastAndSlowEvents().ToObservable().Timestamp();
          var throttled = observable.Throttle(TimeSpan.FromMilliseconds(750));
  
          using (throttled.Subscribe(x =&gt; Console.WriteLine("{0}: {1}", x.Value, x.Timestamp)))
          {
              Console.WriteLine("Press any key to unsubscribe");
              Console.ReadKey();
          }
  
          Console.WriteLine("Press any key to exit");
          Console.ReadKey();
      }
  </code></pre>
  
  <p>I don't understand why the line "Press any key to unsubscribe" never shows. My understanding was subscribing is asynchronous, you subscribe and it immedietly returns. What am I missing that causes my main thread to block?</p>