Backpressure and absence of unbounded queues/channels is also crucial for availability, in applications when running out of memory is not acceptable. Also in most services response time and jitter needs to be constrained making any unlimited wait not suitable.
Now, locks can be useful but they also act like "goto", breaking abstraction. I wonder if there could be structured locking as well, making it easier to visualized dependencies between threads and maybe even prevent deadlocks at compile time...