A melhor maneira de classificar uma coleção em um CompositeView

Eu estou tentando classificar uma coleção em umMarionette.CompositeView.
Eu tenho uma coleção que se parece com isso:

[
   {id: 1, name: 'bar'},
   {id: 2, name: 'boo' },
   {id: 3, name: 'foo' }
]

Eu preciso classificar a coleção por id na ordem inversa.
Na verdade, só funciona quando eu recarregar a página.
Quando eu adiciono um novo modelo, o novo item é adicionado aparentemente aleatório à lista.
Se eu atualizar a página, eles serão bem classificados.

Minhas perguntas são:
1) como corrigir o problema quando eu adiciono um novo modelo?
2) será possível melhorar o código?

Aqui está o meu código:

return Marionette.CompositeView.extend({

    initialize: function () {
        this.collection.fetch();
    },

    onRender: function () {
        var collection =  this.collection;

        collection.comparator = function (collection) {
            return - collection.get('id');
        }
    },

    onSuccess: function () {
        this.collection.add(this.messageModel);
        this.collection.sort(); // the messageModel seems to be added 
                                // apparently randomly to the list. 
                                // only if I refresh the page it will be ok
    }
})

questionAnswers(3)

yourAnswerToTheQuestion