helper.hook сейчас делает перегрузку, плодя кучу новых функций.
Идея в том, чтобы вместо очередной перегрузки сохранить просто массив функций, который мы привязали к оригинальной функции, которая в свою очередь будет вызывать все функции из этого массива.
Хранить массив можно в некотором "скрытом" поле объекта, чья функция перегружается.