Гарантированный cleanup
finally выполняется при выходе из связанного try/catch — нормально или через return / throw / break / continue. Удобно закрывать ресурсы, снимать лоадеры, unlock.
try {
} catch (error) {
} finally {
}
Ловушка
Не делайте return/throw из finally без крайней нужды: completion finally перебивает предыдущий return/ошибку — источник тонких багов.
Итог: finally — детерминированная уборка; сами по себе return/throw из него опасны.