For example, in Go, when you read a value from a channel, it's just like a good old blocking call, as far as the programmer is concerned.
On the other hand, an "async" read would involve callback, promise, or some other constructs.