anchor.diff:      await _initSelectedIsolate();
     }
   
  -  void _registerIsolate(IsolateRef isolateRef) {
  +  Future<void> _registerIsolate(IsolateRef isolateRef) async {
       assert(!_isolateStates.containsKey(isolateRef));
       _isolateStates[isolateRef] = IsolateState(isolateRef);
       _isolates.add(isolateRef);
       isolateIndex(isolateRef);
  -    _loadIsolateState(isolateRef);
  -  }
  -
  -  void _loadIsolateState(IsolateRef isolateRef) {
  +    await _loadIsolateState(isolateRef);
  +  }
  +
  +  Future<void> _loadIsolateState(IsolateRef isolateRef) async {
       final service = _service;
  -    _service.getIsolate(isolateRef.id).then((Isolate isolate) {
  -      if (service != _service) return;
  -      final state = _isolateStates[isolateRef];
  -      if (state != null) {
  -        // Isolate might have already been closed.
  -        state.onIsolateLoaded(isolate);
  -      }
  -    });
  +    final isolate = await _service.getIsolate(isolateRef.id);
  +    if (service != _service) return;
  +    final state = _isolateStates[isolateRef];
  +    if (state != null) {
  +      // Isolate might have already been closed.
  +      state.onIsolateLoaded(isolate);
  +    }
     }
   
     Future<void> _handleIsolateEvent(Event event) async {
  
positive.code: 
      if (event.kind == EventKind.kIsolateStart &&
          !event.isolate.isSystemIsolate) {
        _registerIsolate(event.isolate);
        _isolateCreatedController.add(event.isolate);
        // TODO(jacobr): we assume the first isolate started is the main isolate
        // but that may not always be a safe assumption.
  
negative.code:   Future<void> _initIsolates(List<IsolateRef> isolates) async {
      _clearIsolateStates();
  
      await Future.wait([
        for (final isolateRef in isolates) _registerIsolate(isolateRef),
      ]);
  
      // It is critical that the _serviceExtensionManager is already listening
      // for events indicating that new extension rpcs are registered before this
  