Substituindo instruções aninhadas usando por uma única instrução using

Se você encontrou algum código C # como este com instruções / recursos aninhados:

using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var responseStream = response.GetResponseStream())
    {
        using (var reader = new BinaryReader(responseStream))
        {
            // do something with reader
        }
    }
}

É seguro substituí-lo por algo assim?

using (var reader = new BinaryReader(((HttpWebResponse)request.GetResponse()).GetResponseStream()))
{
    // do something with reader
}

O exemplo acima é apenas um exemplo de recursos descartáveis aninhados, então me perdoe se não for exatamente o uso correto. Estou curioso para saber quando você descarta o recurso mais externo (o BinaryReader neste caso), se ele recursivamente descarta seus filhos para você ou se você precisa dispor explicitamente cada "camada" com instruções de uso separadas? Por exemplo. se você descartar o BinaryReader, ele deve descartar o fluxo de resposta, que, por sua vez, descarta a resposta? Pensar nessa última frase me faz pensar que você realmente precisa de instruções de uso separadas, porque não há como garantir que um objeto wrapper descarte o objeto interno. Isso está certo?

questionAnswers(5)

yourAnswerToTheQuestion