It originally worked this way, but was changed by commit
a8a8a3e0965201df88bdfdff08f50e5c06c552b7, since which time it's been impossible
for walreceiver to ever send a reply with write_location and flush_location
set to different values.
 
                        while (walrcv_receive(0, &type, &buf, &len))
                                XLogWalRcvProcessMsg(type, buf, len);
 
+                       /* Let the master know that we received some data. */
+                       XLogWalRcvSendReply();
+
                        /*
                         * If we've written some records, flush them to disk and let the
                         * startup process and primary server know about them.