I used a "background audio" permission and then played imperceptible
audio, to keep the app going.
This isn’t a supported technique.
Regardless, I can answer your original question. You wrote:
There is no mention of how hard it tries to not go beyond the given
This is limited by the Swift concurrency cooperative thread pool. When a task comes out of sleep, the concurrency runtime has to find a thread to run it on. It pulls this from the afore-mentioned thread pool. If no threads are available, the task has to wait. The runtime will not start a new thread (no overcommit), nor can it preempt an existing one (hence the cooperative).
So, the amount of delay is only bounded by how long your async/await code runs between
await calls .
WWDC 2021 Session 10254 Swift concurrency: Behind the scenes talks about this stuff in depth. I highly recommend it.
Share and Enjoy
Quinn “The Eskimo!” @ DTS @ Apple
 This assumes you’re running enough task to use all the threads in the pool. Currently the pool is sized at a thread per core, so it’s relatively simple to do that.