Redis can only perform asynchronous replication because it uses a single thread. It cannot block the main thread waiting for the network and have acceptable performance. This makes replication as good as "appendfsync no" as you have no guarantees as to what happened on the network write.
The upside of the design is that it makes things simple (e.g., transactions, append only file).
(This is my understanding, please correct me if I'm wrong!)