title: await Task doesn't work with IEnumerable
body: <p>I am trying to execute an existing synchronous method asynchronously, however if the method is <code>IEnumerable</code>, then it appears to skip over the method.</p>
  
  <p>Here's a simplified version of what I'm trying to achieve.</p>
  
  <pre><code>public partial class MainWindow : Window
  {
      private IEnumerable&lt;int&gt; _Result;
  
      public MainWindow()
      {
          InitializeComponent();
  
          DoSomethingAmazing();
      }
  
      private async void DoSomethingAmazing()
      {
          _Result = await DoSomethingAsync();
      }
  
      private IEnumerable&lt;int&gt; DoSomething()
      {
          Debug.WriteLine("Doing something.");
  
          //Do something crazy and yield return something useful.
          yield return 10;
      }
  
      private async Task&lt;IEnumerable&lt;int&gt;&gt; DoSomethingAsync()
      {
          //Perform the DoSomething method asynchronously.
          return await Task.Run(() =&gt; DoSomething());
      }
  }
  </code></pre>
  
  <p>Essentially, when then <code>MainWindow</code> gets created, it will fire off an asynchronous method to populate the <code>_Result</code> field.</p>
  
  <p>Now <code>DoSomething</code> never actually executes. The debug message never appears.</p>
  
  <p>If I change <code>IEnumerable</code> to <code>List</code>, then all is well. The method gets executed and the result gets populated.</p>
  
  <p>The main reason I want to use <code>IEnumerable</code> is because I'd like to make use of <code>yield return</code>, it's not exactly a requirement, but it's mainly just a preference. I came across this issue and I've been scratching my head ever since.</p>