objectPool

fun <T> objectPool(maxSize: Int, maxDuration: Duration = 5.minutes, onClose: suspend (T) -> Unit = {}, factory: suspend () -> T): ObjectPool<T>
suspend fun <T> objectPool(    maxSize: Int,     initialSize: Int = 1,     maxDuration: Duration = 5.minutes,     onClose: suspend (T) -> Unit = {},     factory: suspend () -> T): ObjectPool<T>