The reason I use per-gem locking here is that `Build::Converter.run!` has a return value so I couldn't use `Build::Locking.lock_once` there. The way the code works now, if you do the same request twice the work will only be done once, and as a bonus, when two different requests have some gems in common, the work for the common gems will only be done once.