dispose method
Releases all resources. The client must not be used after this call.
Closes streams, cancels timers, and disposes the underlying HTTP / WS clients. Idempotent: a second call is a no-op. Any method invoked after dispose returns a failure or throws — treat the instance as dead.
Implementation
@override
Future<void> dispose() async {
await _eventController.close();
await _stateController.close();
}