anchor.diff:      sources = _getOverlayMapWithPaths(sources);
       String path = _getPathFromName(sourceName);
   
  -    await serverConnection._ensureSetup();
  -    await serverConnection.loadSources(sources);
  -    await serverConnection.analysisComplete.first;
  -    var fixes = await serverConnection.sendGetFixes(path, offset);
  -    await serverConnection.unloadSources(sources.keys.toList());
  -    return fixes;
  +    while (serverBusy) {
  +      await new Future.delayed(new Duration(seconds: 0));
  +    }
  +    serverBusy = true;
  +
  +    return new Future.sync(() async {
  +      await serverConnection._ensureSetup();
  +      await serverConnection.loadSources(sources);
  +      await serverConnection.analysisComplete.first;
  +      var fixes = await serverConnection.sendGetFixes(path, offset);
  +      await serverConnection.unloadSources(sources.keys.toList());
  +      return fixes;
  +    }).whenComplete(() => serverBusy = false);
     }
   
     Future<EditFormatResult> _formatImpl(String src, int offset) async {
  -    await serverConnection._ensureSetup();
  -    await serverConnection.loadSources({mainPath : src});
  -    await serverConnection.analysisComplete.first;
  -    var formatResult = await serverConnection.sendFormat(offset);
  -    await serverConnection.unloadSources([mainPath]);
  -    return formatResult;
  +    while (serverBusy) {
  +      await new Future.delayed(new Duration(seconds: 0));
  +    }
  +    serverBusy = true;
  +
  +    return new Future.sync(() async {
  +      await serverConnection._ensureSetup();
  +      await serverConnection.loadSources({mainPath : src});
  +      await serverConnection.analysisComplete.first;
  +      var formatResult = await serverConnection.sendFormat(offset);
  +      await serverConnection.unloadSources([mainPath]);
  +      return formatResult;
  +    }).whenComplete(() => serverBusy = false);
     }
   
     Map<String, String> _getOverlayMapWithPaths(Map<String, String> overlay) {
  
positive.code:     _logStdio('PROCESS FORCIBLY TERMINATED');
      _process.kill();
      Future<int> exitCode = _process.exitCode;
      _process = null;
      return exitCode;
    }
  
negative.code: 
  class AnalysisServerWrapper {
    final String sdkPath;
    bool serverBusy = false;
  
    /// Instance to handle communication with the server.
    _Server serverConnection;
  