When should I not use async/await?

when using moralis sdk there are some functions like:
const { getNFTBalances, data } = useNFTBalances() , where it automatically fill the “data” with the result just calling the function.
Same for: const { fetchERC20Balances, data } = useERC20Balances()

And there are function like:
import { useMoralisWeb3Api } from “react-moralis”;
const Web3Api = useMoralisWeb3Api();
await Web3Api.account.account.getNFTs(), where I need to structure an async/await function.

What are the differences from the first and the second type of functions?
I see that useMoralisWeb3Api always needs the async/await structure.
But what about the first one? Is it from Web3Api as well? Thank you

They’re different ways of achieving the same thing. The hooks like useNFTBalances() are just easier ways for fetching data / resolving promises and populating ready to use states like data so it’s easy to use in a React app. This is the underlying hook code used for the API hooks.

You can read this as well. And for hooks.