migrating from Provider to Providing: using invokeProvider()

~ invokeError now throws a TypeError instead of ArgumentError for unsupported first argument
- Tests still use Provider.provide() directly, changing the implementations to the new Interface is the next step