Why async method return type can not be derived from Task?
<p>I have a class (simplified sample and only relevant parts shown) </p>

<pre><code>public class AsyncScenario : Task&lt;Scenario&gt;
{
    public async AsyncScenario Test(Func&lt;Task&gt; action)
    {
        return await this;           
    }
}
</code></pre>

<p>I can't compile this because the return type of the method: </p>

<blockquote>
  <p>Compiler error CS1983: "The return type of an async method must be void, Task or Task&lt;T>"</p>
</blockquote>

<p>Why is it not allowed for async method to return a class derived from <code>Task&lt;T&gt;</code>?</p>