self.engines - это не массив судя по тому что написано в этом коде. Это либо объект наследник массива, в таком случае смотрите где напортачили в прототипах, либо массив с измененным прототипом (что вообще нельзся делать).
Ну или это нечто вообще не связанное с массивом
остановите в отладчике код на строке 10 и выведите в консоль следующее:
1) self.engines
2) self.engines instanceof Array
3) self.engines.push
Смотрите ошики в консоли.