withPermit

suspend fun <T> withPermit(block: suspend () -> T): T

Acquires a permit via acquire, then runs block and returns its result.

The permit is consumed rather than held: it frees on its own once it leaves the sliding window, regardless of how long block runs.