docs: function runBrowsers(location, remote, options) {
    if (remote === 'testingbot') {
      var user = options.username || process.env.TESTINGBOT_KEY;
      var key = options.accessKey || process.env.TESTINGBOT_SECRET;
      if (!user || !key) {
        return Promise.reject(new Error('You must provide `username` and `accessKey` as options ' +
                                        'or set "TESTINGBOT_KEY" and "TESTINGBOT_SECRET" in your ' +
                                        'environment variables.'));
      }
      remote = 'http://' + user + ':' + key + '@hub.testingbot.com/wd/hub';
    }
    var platforms = options.platforms;
    if (Array.isArray(platforms)) {
      if (options.bail) {
        return runBrowsersBail(location, remote, platforms, {
          name: options.name,
          throttle: options.throttle,
          capabilities: options.capabilities,
          debug: options.debug,
          httpDebug: options.httpDebug,
          jobInfo: options.jobInfo,
          allowExceptions: options.allowExceptions,
          testComplete: options.testComplete,
          testPassed: options.testPassed,
          timeout: options.timeout,
          onStart: options.onStart,
          onQueue: options.onQueue,
          onResult: options.onResult
        });
      } else {
        return runBrowsersParallel(location, remote, platforms, {
          name: options.name,
          throttle: options.throttle,
          parallel: options.parallel,
          capabilities: options.capabilities,
          debug: options.debug,
          httpDebug: options.httpDebug,
          jobInfo: options.jobInfo,
          allowExceptions: options.allowExceptions,
          testComplete: options.testComplete,
          testPassed: options.testPassed,
          timeout: options.timeout,
          onStart: options.onStart,
          onQueue: options.onQueue,
          onResult: options.onResult
        });
      }
    } else if (Object.keys(platforms).every(function (key) { return Array.isArray(platforms[key]); })) {
      return runBrowsersKeyed(location, remote, platforms, {
        name: options.name,
        throttle: options.throttle,
        parallel: options.parallel,
        capabilities: options.capabilities,
        debug: options.debug,
        httpDebug: options.httpDebug,
        jobInfo: options.jobInfo,
        allowExceptions: options.allowExceptions,
        testComplete: options.testComplete,
        testPassed: options.testPassed,
        timeout: options.timeout,
        bail: options.bail,
        onStart: options.onStart,
        onQueue: options.onQueue,
        onResult: options.onResult,
        onBrowserResults: options.onBrowserResults
      });
    } else {
      return (options.throttle ? options.throttle : function (fn) { return fn(); })(function () {
        return runSingleBrowser(location, remote, (options.platform || {}), {
          name: options.name,
          capabilities: options.capabilities,
          debug: options.debug,
          httpDebug: options.httpDebug,
          jobInfo: options.jobInfo,
          allowExceptions: options.allowExceptions,
          testComplete: options.testComplete,
          testPassed: options.testPassed,
          timeout: options.timeout
        });
      });
    }
  }