title: try-with-resources where to wrap stream with InputStreamReader?
body: <p>I may be overthinking this, but I just wrote the code:</p>
  
  <pre><code>try (InputStream in = ModelCodeGenerator.class.getClassLoader().getResourceAsStream("/model.java.txt"))
  {
      modelTemplate = new SimpleTemplate(CharStreams.toString(new InputStreamReader(in, "ascii")));
  }
  </code></pre>
  
  <p>Which means the InputStreamReader is never closed (but in this case we know its close method just closes the underlying InputStream.)</p>
  
  <p>One could write it as:</p>
  
  <pre><code>try (InputStreamReader reader = new InputStreamReader(...))
  </code></pre>
  
  <p>But this seems worse. If InputStreamReader throws for some reason, the InputStream won't ever be closed, right? This is a common problem in C++ with constructors that call other constructors. Exceptions can cause memory/resource leaks.</p>
  
  <p>Is there a best practice here?</p>