title: Read headers from HttpResponseMessage before Content is 100% complete
body: <ol>
  <li>How do I access the response headers, before the entire response has been streamed back?</li>
  <li>How do I read the stream as it arrives?</li>
  <li>Is HttpClient my best choice for such granular control of receiving the http response?</li>
  </ol>
  
  <p>Here's a snip that might illustrate my question:</p>
  
  <pre><code>using (var response = await _httpClient.SendAsync(request,
    HttpCompletionOption.ResponseHeadersRead))
  {
     var streamTask = response.Content.ReadAsStreamAsync();
     //how do I check if headers portion has completed? 
     //Does HttpCompletionOption.ResponseHeadersRead guarantee that?
     //pseudocode
     while (!(all headers have been received)) 
       //maybe await a Delay here to let Headers get fully populated
     access_headers_without_causing_entire_response_to_be_received
  
     //how do I access the response, without causing an await until contents downloaded?
     //pseudocode
     while (stremTask.Resul.?) //i.e. while something is still streaming
       //? what goes here? a chunk-read into a buffer? or line-by-line since it's http?
     ...
  </code></pre>
  
  <p><br />
  <strong>Edit</strong> to clarify another gray area for me:<br />
  <strike>Any reference I unearthed has some kind of a blocking statement, that would cause await for the contents to arrive.</strike> References I read usually access methods or properties on the streamTask.Result or on the Content, and I don't know enough to rule out which such references are okay as the streamTask is progressing vs. which are going to cause an await until the task completes.</p>