I have code, something like this:
entities.forEach {
    launch() {
        doingSomethingWithDB(it)
    }
}
suspend fun doingSomethingWithDB(entity) {
    getDBConnectionFromPool()
    // doing something
    returnDBConnectionToPool()
}
And when the number of entities exceeds the size of DB connections pool (I use HikariCP), I get the error - Connection is not available....  Even if I only use the single thread (e.g. -Dkotlinx.coroutines.io.parallelism=1), I get this error anyway.
Are there best practices for limiting the number of parallel coroutines when dealing with external resources (like fixed size DB connection pool)?