Coroutines allow to write imperative and functional, it's just a language feature.
For example check #arrow, they use coroutines a lot for completely functional things
Suspend function by itself imo has nothing to do with imperative code, you can write functional code with it