обычно я делаю обертки для запросов, чтобы не писать на каждый запрос try { fetch() } catch () {}
А я сделал фасад для обращения к апи, где спрятал эффект вообще с глаз долой. И пожалел потом об этом. Потом нам пришлось выносить реализацию одного дерева как отдельный абстрактный компонент. Там оно умеет в двух-ранговую иерархию (сущности и их категории неограниченной вложенности). Можно делать любой круд над ними через DnD и кнопки. И, чтобы отображать прогресс персонально для каждой ноды дерева, мне потребовался ни что иное, как промис. Т.е. компонент не знает ничего о внешнем мире, принимает на вход абстрактное дерево и реализацию круд операций над ним. Пришлось допиливать фасад, чтобы иметь возможность получить промис. =(