function selectThread(thread, threads, poolSize, args) {
  return function newRound(busyThreads) {
    var task, thread = findBestAvailableThread(threads, busyThreads)
    if (thread) {
      task = runTaskInThread(thread, threads, args)