diff --git a/packages/flutter_tools/lib/src/vmservice.dart b/packages/flutter_tools/lib/src/vmservice.dart index 7f05b7ad1e4..da6d33efb33 100644 --- a/packages/flutter_tools/lib/src/vmservice.dart +++ b/packages/flutter_tools/lib/src/vmservice.dart @@ -350,6 +350,9 @@ class VMService implements vm_service.VmService { final io.WebSocket channel = await _openChannel(wsUri.toString(), compression: compression); final StreamController primary = StreamController(); final StreamController secondary = StreamController(); + // Create an instance of the package:vm_service API in addition to the flutter + // tool's to allow gradual migration. + final Completer streamClosedCompleter = Completer(); channel.listen((dynamic data) { primary.add(data); @@ -357,15 +360,14 @@ class VMService implements vm_service.VmService { }, onDone: () { primary.close(); secondary.close(); + if (!streamClosedCompleter.isCompleted) { + streamClosedCompleter.complete(); + } }, onError: (dynamic error, StackTrace stackTrace) { primary.addError(error, stackTrace); secondary.addError(error, stackTrace); }); - // Create an instance of the package:vm_service API in addition to the flutter - // tool's to allow gradual migration. - final Completer streamClosedCompleter = Completer(); - final vm_service.VmService delegateService = vm_service.VmService( primary.stream, channel.add,