I agree some locking should probably be put in place, and if we check for the mapping before registering it, the overhead of getting the metadata will only need to happen once. 

We can't call autowire with just the target and targetID like you showed, because the injector will get the metadata from the target, which will ONLY be the super class (coldbox.system.ColdboxProxy) and it won't get any of the metadata from the sub class (remote.myProxy).  

Autowire() doesn't have a way to pass in the metadata to use.  I actually experimented with a change to pass in the target metadata directly to autowire(), but I didn't think you would like adding more params to that method, so I changed to a method of just manually creating the mapping since I could control the metadata that was stored in the mapping that way.