I only have an Arduino - Duemilanove, Uno, Mega2560 and my own designed, NormDuino (8 MHz, no crystal as seen at http://qdosmsq.dunbar-it.co.uk/blog/2019/02/atmega328p-8mhz-on-a-breadboard. All of the above can be easily programmed with my usbTiny programmer.
I believe that the Leonardo has to disconnect the current port in order to upload? I don’t know if it needs to change the port speed or not, but I believe that there is be a timeout setting you can change so that it waits a bit longer to detect the port reconnecting. Does this link help, it’s to a workaround someone else found/created which might also work for you, perhaps?
One other thing, does your USB cable work as a data cable for other stuff? Some cables are two wire only - these are used for charging phones etc and are no good for uploading musinc to a music player, or, in this case, for uploading code to a Leonardo!
Cheers,
Norm.