Question: if the stream is going to be destroyed, is it really necessary to manually remove this listener? I have never seen any API where this was necessary in order to prevent memory leak. In the generated javadoc that is usually referred to as server side API documentation, I haven't found any info about this. :-)
It best practice where possible to remove any objects used in a connection prior to it shutting down. Keeping track of objects used is an important element when writing any code, regardless of language used.