suspend fun <T> run(block: suspend () -> T): T Runs block under one permit, or fails with QueryBusyException when none is free.
fun <T> run(source: Flow<T>): Flow<T> source, collected under one permit taken when it is collected, or failing with QueryBusyException.