title: Throttle IObservable based on whether async handler is still busy
body: <p>I have an <code>IObservable</code> that generates a value every second, followed by a select that runs code that may take some time:</p>
  
  <pre><code>var events = Observable.Interval(TimeSpan.FromSeconds(1));
  ssoInfoObservable = events
      .Select(async e =&gt;
      {
          Console.Out.WriteLine("Select   : " + e);
          await Task.Delay(4000);
          return e;
      })
      .SelectMany(t =&gt; t.ToObservable())
      .Subscribe(l =&gt; Console.WriteLine("Subscribe: " + l));
  </code></pre>
  
  <p>The long-running operation takes 4 seconds in my example. While the code inside <code>Select</code> is running, I do not want another value from the <code>Interval</code> to be generated. How do I accomplish this? Is this possible? Maybe use a specific <code>IScheduler</code> implementation?</p>
  
  <p>Note that if there's no async code, everything works as expected as described <a href="https://stackoverflow.com/questions/31457743/throttle-observable-based-on-whether-handler-is-still-busy">here</a>.</p>
  
  <p>This question is very similar to <a href="https://stackoverflow.com/questions/31457743/throttle-observable-based-on-whether-handler-is-still-busy">one I asked earlier</a>, except for the <code>async/await</code>.</p>