title: StreamReader ReadToEnd() returns empty string on first attempt
body: <p>I know this question has been asked before on Stackoverflow, but could not find an explanation.</p>
  
  <p>When I try to read a string from a compressed byte array I get an empty string on the first attempt, on the second I succed and get the string.</p>
  
  <p>Code example:</p>
  
  <pre><code>public static string Decompress(byte[] gzBuffer)
  {
      if (gzBuffer == null)
          return null;
      using (var ms = new MemoryStream(gzBuffer))
      {
          using (var decompress = new GZipStream(ms, CompressionMode.Decompress))
          {
              using (var sr = new StreamReader(decompress, Encoding.UTF8))
              {
                  string ret = sr.ReadToEnd();
                  // this is the extra check that is needed !?
                  if (ret == "")
                      ret = sr.ReadToEnd();
                  return ret;
              }
          }
      }
  }
  </code></pre>
  
  <p>All suggestions are appreciated. 
  - Victor Cassel</p>