Leave the charset choice to the DSN config
Use a marshaller in the UPDConnection
Let the marshaller close the stream

If you want to close the stream manually later, wrap the stream
so the close() method isn't accessible.
Enforce the immutability of throwables