start method
Starts the connection.
Returns a Promise that resolves when the connection has been successfully established, or rejects with an error.
Implementation
Future<void>? start() async {
_startPromise = _startWithStateTransitions();
return _startPromise;
}