You also can run each coroutine on a separate thread, if you want.
And suspend itself not bounded to any particular thread, it’s just callback. Execution strategy is not a part of suspend function or coroutines. But CommonPool just default strategy of coroutine execution on kotlinx.coroutines