Sometimes it might be necessary to prevent access to a route until some async operation has fulfilled. For example, this might be the case if we want to pre-load data from a backend and have it ready before anything at all is rendered on the screen. We can accomplish this with route resolvers.