The point of creating an additional indirection with the IEffectProvider
both to decouple the effect implementation, but also to allow for various factory patterns. After all, a factory is just a function.
So for example, some effects might require singleton implementations, other per-request implementations, and creating an effect-provider per request, partially applied with singleton dependencies is a natural solution. That also means that
the provider can be made to hold state that is local to that effect. Also transactions