runBlocking utilizes EmptyCoroutineContext by default meaning that under the hood Dispatchers.Default is being used. This is a bottle neck and should not be a thing. Need to pass in as a constructor argument Dispatchers.IO to all runBlocking function calls.