ну, я примерно то же самое сделал, только с помощью state-менеджера. Разбил атомы до состояния, что 1 действие - 1 атом. Добавил в такой атом isFetching, isSuccess, isError.
Ну и потом хуки типо
const useAsynсAction = (atom) => useAtom(atom, state => ({ isFetching, isSuccess, isError }))
и живу прекрасно.