Напиши функцию useResource(log, work). Сначала она добавляет в массив log строку 'open', потом вызывает work() и возвращает её результат. В конце в log всегда попадает 'close', даже если work() бросила ошибку. Саму ошибку не перехватывай, пусть она уходит дальше как есть.
useResource([], () => 42)Вернёт 42
(() => { const log = []; useResource(log, () => 'done'); return log; })()Вернёт [ 'open', 'close' ]
Скрытые тесты запускаются по Submit.