Solid advice from Marcin.
One other situation where you could use a Flow instead of a suspend function:
A method that gets data in more than 1 step, using more than one (remote) data source, and some of these steps are quite slow, should return a Flow that emits each intermediate and updated result one step at a time. This would allow you to update the UI each "step" so that the user sees at least something at an earlier time.