see https://github.com/pypa/pip/pull/483#issuecomment-5127419

and

https://github.com/pypa/pip/pull/483#issuecomment-5136135

The adding to get up to 10 logic could be applied in more than one thread concurrently - so yes, it was clearer to use a pool-like model with queue.task_done and a fixed count of threads.