App.flashQueueController = Ember.ArrayController.extend({
  // 15s
  destroyTimeout: 15 * 1e3,
  flash: function(type, message){
    var flash = App.FlashMessage.create({
      type: type,
      message: message,
      scheduledToDestroy: true
    });

    this.pushObject(flash);
    if (flash.get('scheduledToDestroy')) {
      this.scheduleDestroy(flash);
    }
  },
  scheduleDestroy: function(flash){
    var self = this;
    setTimeout(function(){
      self.removeObject(flash);
    }, this.destroyTimeout);
  }
}).create();

App.flashQueueController = Ember.ArrayController.extend({
  destroyTimeout: 15 * 1e3, // 15s
  flash: function(type, message){
    var flash = App.FlashMessage.create({
      type: type,
      message: message,
      scheduledToDestroy: true
    });
    this.pushObject(flash);

    if (flash.get('scheduledToDestroy')) {
      Ember.run.later(this, function(){
        this.removeObject(flash);
      }, this.destroyTimeout)
      this.scheduleDestroy(flash);
    }
  }
}).create();

Use Ember.run.later instead of setTimeout
Use Ember.run.later instead of setTimeout
