title: Pass-through for IAsyncEnumerable?
body: <p>I'd like to know if there's a way I can write a function to "pass through" an IAsyncEnumerable... that is, the function will call another IAsyncEnumerable function and yield all results without having to write a <code>foreach</code> to do it?</p>
  
  <p>I find myself writing this code pattern a lot. Here's an example:</p>
  
  <pre><code>async IAsyncEnumerable&lt;string&gt; MyStringEnumerator();
  
  async IAsyncEnumerable&lt;string&gt; MyFunction()
  {
     // ...do some code...
  
     // Return all elements of the whole stream from the enumerator
     await foreach(var s in MyStringEnumerator())
     {
        yield return s;
     }
  }
  </code></pre>
  
  <p>For whatever reason (due to layered design) my function <code>MyFunction</code> wants to call <code>MyStringEnumerator</code> but then just yield everything without intervention. I have to keep writing these <code>foreach</code> loops to do it. If it were an <code>IEnumerable</code> I would return the <code>IEnumerable</code>. If it were C++ I could write a macro to do it.</p>
  
  <p>What's best practice?</p>