title: How would I write my own FirstOrDefaultAsync() method
body: <p>I am starting to get my head around the async/await programming model and trying to understand the patterns and how to use them.</p>
  
  <p>Given I I have a Method that returns <code>Task&lt;List&lt;string&gt;&gt; GetListAsync()</code></p>
  
  <p>How can I write my own FirstOrDefault() method like this</p>
  
  <pre><code>Task&lt;string&gt; result = GetListAsync().FirstOrDefaultAsync();
  </code></pre>
  
  <p>this doesn't feel right:</p>
  
  <pre><code> var resultList = await GetListAsync();
   var firstElementTask = Task.FromResult(resultList.FirstOrDefault());
  </code></pre>
  
  <p>What would be I valid approach which doesn't break the async/await programming model?</p>