import Ember from 'ember'; const { RSVP, Mixin, Logger: { info }, run } = Ember; let MyMixin = Mixin.create({ beforeModel() { this._super(...arguments); info('at mixin'); return timeoutPromise(3000) .then(() => {this.beforeModel2()}); } }); function timeoutPromise(milliseconds) { return new Promise(function(resolve,reject) { run.later(this, resolve, milliseconds); }); } export default Ember.Route.extend(MyMixin, { /* beforeModel() { // OJO debe llevar return si queremos que la promesa del mixin se agote return this._super(...arguments); console.log(new Date(), " beforeModel"); //return timeoutPromise(); }, */ beforeModel2() { info("El beforeModel2 de la ruta"); }, model() { console.log(new Date(), " model"); return timeoutPromise(5000); }, afterModel() { console.log(new Date(), " afterModel"); return timeoutPromise(5000); } });