These limit the number of concurrently running futures, which often but doesn't always limit overall concurrency. Add a note about this.
From @hawkw:
if your stream is returning tokio::spawn(do_stuff()) and you group them into a queue, the concurrency isn't limited, but if your stream is returning async move { tokio::spawn(do_stuff()).await } then the task isn't spawned until the future is actually polled for the first time
These limit the number of concurrently running futures, which often but doesn't always limit overall concurrency. Add a note about this.
From @hawkw: