Our caller is supposed to try/finally the PackWriter, calling PackWriter release() which will call reader.release().

Doing a release here early as soon as writing is done is just to try and kick out memory that we don't need to create an index file.  Tossing it into a try/finally here in writePack is probably pointless, if we fail here, we're heading for our caller's finally block anyway.