generateStream returns a Flow<GenerationEvent>. It is not suspending: you get the flow
back immediately and collect it.
Signatures
Handling every event
In a ViewModel
viewModelScope means the flow is cancelled when the ViewModel clears, so a
generation does not outlive the screen.