anchor.diff:        build = await BuildImpl.create(_buildDefinition, buildActions,
             onDelete: _expectedDeletes.add);
   
  -      controller.add(build.firstBuild);
  +      // It is possible this is already closed if the user kills the process
  +      // early, which results in an exception without this check.
  +      if (!controller.isClosed) controller.add(build.firstBuild);
  +
         firstBuildCompleter.complete(build.firstBuild);
       }();
   
  
positive.code:         .transform(debounceBuffer(_debounceDelay))
          .transform(takeUntil(terminate))
          .transform(asyncMapBuffer(_recordCurrentBuild(doBuild)))
          .listen(controller.add)
          .onDone(() async {
            await _buildDefinition.resourceManager.beforeExit();
            await controller.close();
            _logger.info('Builds finished. Safe to exit');
          });
  
      // Schedule the actual first build for the future so we can return the
  
negative.code:     }
  
      var terminate = Future.any([until, fatalBuildCompleter.future]).then((_) {
        _logger.info('Terminating. No further builds will be scheduled\n');
      });
  
      // Start watching files immediately, before the first build is even started.
  