Najlepszy sposób na sortowanie kolekcji w CompositeView

Próbuję posortować kolekcję w aMarionette.CompositeView.
Mam kolekcję, która wygląda tak:

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

Muszę posortować kolekcję według identyfikatora w odwrotnej kolejności.
Właściwie działa tylko po ponownym załadowaniu strony.
Kiedy dodaję nowy model, nowy element jest dodawany do listy na pozór losowo.
Jeśli odświeżę stronę, będą dobrze posortowane.

Moje pytania to:
1) jak rozwiązać problem, gdy dodam nowy model?
2) możliwe będzie ulepszenie kodu?

Oto mój kod:

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