Ignore errors after .end() is called instead of causing an uncaught exception

Currently, it is possible for an error to occur on the stream after .end() is called, which clears event listeners.  This results in an uncaught exception.  In particular, if a connection is pending while .end() is called, then fails (with something like ECONNREFUSED), it triggers an uncaught exception.  This commit causes it to ignore errors after .end() is called.