>But one of the reasons you're able to process more with async I/O is bypassing the costs of the thread-per-connection model.
One reason, not the only, or the most important. The primary advantage of non blocking IO is that the CPU isn't sitting idle while waiting for an IO operation to complete. We aren't wasting an entire core to write the response.