title: Is there a definitive naming convention for methods returning IAsyncEnumerable?
body: <p>After C# 5 introduced the <code>async</code> and <code>await</code> model for asynchronous programming, the C# community arrived at a naming convention to add an "Async" suffix to methods returning an awaitable type, like this:</p>
  
  <pre><code>interface Foo
  {
     Task BarAsync();
  }
  </code></pre>
  
  <p>Many static code analyzers (both Roslyn-based and non-Roslyn-based) have since been written to depend on this naming convention when detecting code smell around asynchronous programming.</p>
  
  <p>Now that C# 8 has introduced the concept of asynchronous enumerables, which themselves are not awaitable but can be used in conjunction with <code>await foreach</code>, there seems to be two options for naming methods returning <code>IAsyncEnumerable</code>:</p>
  
  <pre><code>interface Foo
  {
      // No "Async" suffix, indicating that the return value is not awaitable.
      IAsyncEnumerable&lt;T&gt; Bar&lt;T&gt;();
  }
  </code></pre>
  
  <p>or</p>
  
  <pre><code>interface Foo
  {
      // With "Async" suffix, indicating that the overall logic is asynchronous.
      IAsyncEnumerable&lt;T&gt; BarAsync&lt;T&gt;();
  }
  </code></pre>
  
  <p>Has there been a definitive naming convention guideline (from the C# language team, the .NET Foundation, or other authorities) regarding the options above, like how the C# 5 naming convention was unambiguously standardized and not left to opinion-based judgement of programmers?</p>