code: function configure(config) {
      tapLimit = config.tapLimit;
      testNumber = config.priorTestNumber;
      testFileRegex = new RegExp(config.testFileRegexStr);
      failedTests = config.failedTests;
      maxFailedTests = config.maxFailedTests;
      catchExceptions = config.catchExceptions;
      if (config.selectedTests !== '')
          selectTests(config.selectedTests);
      debugBreak = config.debugBreak;
      
      installTapWithPatches(config.tapPath);
      
      runUserCode(function() {
          require(config.filePath);
      }, false);
      
      // installing a tearDown handler induces tap autoend,
      // which sometimes causes tearDown before tests install,
      // so have to install handler *after* registering tests.
      // the handler installs because tap has to wait for all
      // tests by waiting at least until the next tick.
      
      tap.tearDown(function() {
          process.send({
              event: 'done',
              lastTestNumber: testNumber,
              failedTests: failedTests
          });
          // disconnect IPC so can exit when stdout, stderr,
          // child processes, and other resources complete.
          process.disconnect();
      });
      tap.end();
  }
docs: avoid race condition // SUPPORT FUNCTIONS ////////////////////////////////////////////////////////