Replicas may serve slightly stale reads, and if the primary fails, transactions committed but not yet received by the replica can be lost on failover
With asynchronous replication, the primary reports a commit as done before any replica has the change. So two things can go wrong:
• If the primary fails, a failover can lose the most recent commits.
• Reads from a replica can return slightly old data.
"Every commit on the primary blocks until all replicas confirm" describes the opposite setting. That is how synchronous replication behaves. You turn it on with synchronous_standby_names. Then each commit waits for a standby, so commits are slower, but they are not lost on failover.