By promise I assume you mean the async/await. The fetching of data in useEffect is the perfect place to make a call to an async function. The refresh should not be that often if fetching lots of data but even if it were it would just queue up due to the async/promise.

Their are other libraries that might be better solutions too such as react-query and useSWR. I just wanted to give a fairly vanilla approach.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store