StreamReader.ReadToEnd () devuelve una cadena vacía

Tengo un metodo

private static String DecompressAndDecode(byte[] data)
{
   GZipStream decompressor = new GZipStream(new MemoryStream(data), CompressionMode.Decompress);
   StreamReader decompressed = new StreamReader(decompressor, Encoding.UTF8);
   String result = decompressed.ReadToEnd();
   return result;
}

Tengo algo de texto GZipped como entrada y se supone que el resultado es una representación de cadena de este texto. El problema es que el método devuelve una cadena vacía. Lo que me desconcierta es que cuando paso por el método en modo de depuración y llego a la declaración de retorno, la variable resultante es una cadena vacía, pero si creo un reloj para la expresión descomprimida.ReadToEnd () me devuelve el texto. Lo que esperaría en este punto es que la variable de resultado contenga el texto y la expresión descomprimida.ReadToEnd () que se evalúa en una cadena vacía. (Reevaluar la expresión descomprimida. ReadToEnd () devuelve una cadena vacía como se esperaba).

@Editar: He encontrado queen mi caso ReadToEnd () devuelve el textoen la segunda llamada devolver cadenas vacías en la primera llamada y después de la segunda llamada.

Debe haber algo obvio que me estoy perdiendo aquí.

Respuestas a la pregunta(3)

Su respuesta a la pregunta