[WIP] Split management of messages, resend state, timeouts and so-on into a sub-component of Client called Dispatcher. This components also maintains cross-transport concerns like cookies and headers.
Update the self-signed certificates we use for testing.
Use parens on all logging statements.
Port the recent refactoring to introduce the Dispatcher class over to JavaScript.
Make Transport return a Promise Request so that Dispatcher can abort the request if it times out.
Use a fixed port for Ruby integration tests.
Use script.onerror to catch network errors in the JSON-P transport where the browser makes them available.
Start the Dispatcher in neither the 'up' nor 'down' state so that the application receives some explicit indication of the connection state either way.
Batching transports should only call request() once; in the Ruby version we were forgetting to return early after sending the request.
allow monitoring to be configured in config.ru
add test for monitoring configuration as a block (useful in config.ru)
add note about possible configuration to site
Some clean-up on commits to add a block to RackAdapter.new.
The block to RackAdapter.new should be called after all the initialization is done.
Add unit tests for Dispatcher.
Test that if a message is scheduled for resending, a further handleError() call will be a no-op.
Simplify a guard clause in handleError().
Move the Client unit tests over to mocking the Dispatcher API rather than the Transport API.
Provide a return value from WebSocket#request so that the socket can be closed on message timeout.
Add the 'attempts' and 'deadline' options for controlling message redelivery.