I can't imagine a situation where I need to use a factory provider.
According to the offical docs https://angular.io/docs/ts/latest/guide/dependency-injection.html the situation is that one may not be able to access a service (service-b) from within another service (service-a), but, the factory function does (have access to service-b). So, when would something like this really happen?