Немного расширил функцию: теперь вместо одного колбека вторым аргументом передается объект
- before (вызывается перед запуском функции)
- success (вызывается, если функция отработала успешно)
- error (если возникла ошибка)
- after (вызывается в любом случае, не зависимо от успешности выполнения)
Каждому обработчику передается объект
- args
- self (контекст)
- name (имя функции)
- status ("error" или "success")
- successNumber (количество успешных вызовов)
- errorNumber (количество вызовов с ошибкой)
- result (результат, если есть)
- error (ошибка, если есть)
Кроме этого, функция addCallListener теперь является частью объекта конструктора Function, во избежание попадания в window или process.
Форкнуть и потестить можно здесь:
http://jsfiddle.net/finom/SGhzd/5/