Is it really a good feature to send a "close" packet when we already have heartbeats?
Seems to me like it complicates things unnecessarily, examples:
1. In a mobile app, if you're told to pause you really should finish up quickly. Starting a new network I/O operation is not a good idea, asking for the OS to crash your app.
2. In the case where we're trying to close due to network issues, starting another request that may hang or take ages to return is a bad idea.
Just seems to me that polling close() should try pollXhr.abort() and sendXhr.abort() rather than starting a new request.