done = failures => {
      this._previousRunner = runner;
      this._state = this._cleanReferencesAfterRun
        ? mochaStates.REFERENCES_CLEANED
        : mochaStates.INIT;
      fn = fn || utils.noop;
      if (typeof reporter.done === 'function') {
        reporter.done(failures, fn);
      } else {
        fn(failures);
      }
    }
Runs root suite and invokes `fn()` when complete.

@description
To run tests multiple times (or to run tests in files that are
already in the `require` cache), make sure to clear them from
the cache first!

@public
@see {@link Mocha#unloadFiles}
@see {@link Runner#run}
@param {DoneCB} [fn] - Callback invoked when test execution completed.
@returns {Runner} runner instance
@example

// exit with non-zero status if there were test failures
mocha.run(failures => process.exitCode = failures ? 1 : 0);