PHP bounded round-robin worker pool

PHP
<?php
function run_pool(array $jobs, int $workers, callable $task): array
{
    if ($workers < 1) throw new InvalidArgumentException('Workers must be at least 1');
    $results = [];
    $queue = $jobs;
    while ($queue !== []) {
        for ($worker = 0; $worker < $workers; $worker++) {
            if ($queue === []) break;
            $key = array_key_first($queue);
            $job = $queue[$key];
            unset($queue[$key]);
            try {
                $results[$key] = $task($job, $worker);
            } catch (Throwable $e) {
                $results[$key] = $e;
            }
        }
    }
    return $results;
}