It really depends on how you want your UI to behave. If you return promises from
model() user will have to wait till those promises are resolved (you should probably show some loading indicator then), but on the other hand if there is any problem with fetching those models, you can easily go to some kind of error page.
When you return non-promise objects from routes, your UI will render faster, but you will need to handle not loaded models and show errors differently. For example if you have a sidebar with a list and main view with detailed view and you’re not returning promises in routes, the UI will render immediately, but ideally you should show some kind of loading indicator for both list and post until they’re loaded. And then when loading fails you will have to either show it in the existing UI or redirect to some kind of error page.