But is seems to be semantically incorrect for the provider to hold an injector.

Provider is part of the injector/context not the other way around.