Internal view lifecycle hooks for animation purposes

I agree that a transition only in rare cases should not resolve immediately. The user needs to get instant feedback.

In my oppinion a model object should not be a promise. It’s not a promise, it’s the value. See this discussion about Splitting of Promises from DS.Model (or Ember.Model). I think what gained most support in that thread was to have a find method which returns the model, and a fetch method which returns a promise of the model.

As to your questions:

As soon as all model hooks have resolved. It’s your responsibility (and I believe that all the data frameworks should make this trivial) to make sure that your model hooks don’t return promises. The reason is this: Before all model hooks have been resolved there is nothing to transition to. Something might transition to another route instead of resolving. This is the whole idea of the async router.

See my two examples above.

Does this help answering your questions regarding transition promises and transition animation?