Механизм deferred вызовов положительно влияет на эффективность обработки исключений. 3
Deferred хранит цепочку обработчиков: обработчиков результатов (callback) и обработчиков ошибок (errback). 3 В зависимости от результата (успешное выполнение или исключение) выбирается соответствующая ветвь обработчиков. 3
Если в процессе выполнения обработчика было выкинуто исключение или возвращено значение типа Failure, управление передаётся errback на следующем уровне, который получает исключение в качестве параметра. 3 Если же callback или errback завершается возвратом значения, которое не является Failure, выполнение считается успешным и полученный результат отправляется на вход callback-обработчику на следующем уровне. 3
Кроме того, при возникновении программной ошибки (исключительной ситуации) функция может завершиться, так и не добравшись до cleanup-кода, что может породить утечку ресурсов. 2 Отложенная через defer функция выполнится в любом случае за редким исключением. 2