title: Correct usage of return Task.FromException
body: <p>I recently observed a code review between two developers.</p>
  
  <p>The following code was submitted:</p>
  
  <pre><code> public async Task&lt;List&lt;Thing&gt;&gt; GetThings()
      {
          try
          {
              var endpoint = $"{Settings.ThingEndpoint}/things";
              var response = await HttpClient.GetAsync(endpoint);
              return JsonConvert.DeserializeObject&lt;List&lt;Thing&gt;&gt;(await response.Content.ReadAsStringAsync());
          }
          catch (Exception e)
          {
              Log.Logger.Error(e.ToString());
              return await Task.FromException&lt;List&lt;Thing&gt;&gt;(e);
          }
      }
  </code></pre>
  
  <p>Which received the following review comments:</p>
  
  <blockquote>
    <p>There is absolutely no need to return await Task.FromException>(e), this is something you do when dealing with non awaited task. 
    In this case the catch will capture whatever exception var response = await HttpClient.GetAsync(endpoint); will throw.
    You should just remove it and catch the exception as is</p>
  </blockquote>
  
  <p>I do not fully understand why not to use Task.FromException in this case, so i have the following Questions:</p>
  
  <ol>
  <li>What is the reviewer saying?</li>
  <li>Is the reviewer correct?</li>
  <li>Why not return await Task.FromException?</li>
  <li>What is a correct scenario to return await Task.FromException?</li>
  </ol>