Yeah. there are. For one, the router stops for promises, but only for certain hooks. These promise-aware hooks are ‘beforeModel’, ‘model’, and ‘afterModel’. Setup controller is not promise aware, and it is thus called after the model hooks have been resolved. You won’ t be able to handle errors gracefully, and won’t be sure you have the right data at the right time, opening the doors to all kinds of timing-bugs. You wont enter error and loading routes unless you somehow tell it to, and you may also have to call the Run Loop manually to make sure all the bindings are updated.
The reason why this is such a pain lies in all those ‘mays’. This is one of of those emberisms of making your life complicated if you’re doing it wrong.
Really, you should try to be always fetching data from your model hooks.
What are you trying to use Needs for? What’s the use case?