Use defaultProvider instead of object on get
When doing a get with a default value, we should allow to pass a function instead of a value, to avoid evaluating it when the default value exists.
When doing a get with a default value, we should allow to pass a function instead of a value, to avoid evaluating it when the default value exists.