diff --git a/packages/devtools_app/lib/src/service_manager.dart b/packages/devtools_app/lib/src/service_manager.dart index a4226c56914..a40e5ddaeab 100644 --- a/packages/devtools_app/lib/src/service_manager.dart +++ b/packages/devtools_app/lib/src/service_manager.dart @@ -245,6 +245,19 @@ class ServiceConnectionManager { service.onEvent(serviceStreamName).listen(handleServiceEvent); + _connectedState.value = const ConnectedState(true); + + final isolates = [ + ...vm.isolates, + if (preferences.vmDeveloperModeEnabled.value) ...vm.systemIsolates, + ]; + + await isolateManager.init(isolates); + if (service != this.service) { + // A different service has been opened. + return; + } + final streamIds = [ EventStreams.kDebug, EventStreams.kExtension, @@ -258,9 +271,9 @@ class ServiceConnectionManager { serviceStreamName, ]; - for (final id in streamIds) { + await Future.wait(streamIds.map((String id) async { try { - unawaited(service.streamListen(id)); + await service.streamListen(id); } catch (e) { if (id.endsWith('Logging')) { // Don't complain about '_Logging' or 'Logging' events (new VMs don't @@ -272,21 +285,7 @@ class ServiceConnectionManager { ); } } - } - - if (service != this.service) { - // A different service has been opened. - return; - } - - _connectedState.value = const ConnectedState(true); - - final isolates = [ - ...vm.isolates, - if (preferences.vmDeveloperModeEnabled.value) ...vm.systemIsolates, - ]; - - await isolateManager.init(isolates); + })); if (service != this.service) { // A different service has been opened. return;