code: function run (config, done) {
    config = config || {}
  
    logger.setupFromConfig(config)
  
    done = helper.isFunction(done) ? done : process.exit
    config = cfg.parseConfig(config.configFile, config)
  
    let exitCode = 1
    const options = {
      hostname: config.hostname,
      path: config.urlRoot + 'run',
      port: config.port,
      method: 'POST',
      headers: {
        'Content-Type': 'application/json'
      }
    }
  
    const request = http.request(options, function (response) {
      response.on('data', function (buffer) {
        const parsedResult = parseExitCode(buffer, exitCode, config.failOnEmptyTestSuite)
        exitCode = parsedResult.exitCode
        process.stdout.write(parsedResult.buffer)
      })
  
      response.on('end', () => done(exitCode))
    })
  
    request.on('error', function (e) {
      if (e.code === 'ECONNREFUSED') {
        log.error('There is no server listening on port %d', options.port)
        done(1, e.code)
      } else {
        throw e
      }
    })
  
    request.end(JSON.stringify({
      args: config.clientArgs,
      removedFiles: config.removedFiles,
      changedFiles: config.changedFiles,
      addedFiles: config.addedFiles,
      refresh: config.refresh,
      colors: config.colors
    }))
  }
docs: TODO(vojta): read config file (port, host, urlRoot)