What different values/modes you are thinking for synchronous_transfer ? IMHO only "commit" and "all" may not be enough. As I suggested upthread, we may need an additional mode, say "data", which will ensure synchronous WAL transfer before making any file system changes. We need this separate mode because the failback safe (or whatever we call it) standby need not wait on the commits and it's important to avoid that wait since it comes in a direct path of client transactions.
If we are doing it, I wonder if an additional mode "none" also makes sense so that users can also control asynchronous standbys via the same mechanism.