Synchronous and atomic send needed

I am developing a payment app and I want to support zcash shielded transactions, but… the asynchronous z_sendmany makes this very difficult and adds undesirable complexity.

Most wallet API have a synchronous and atomic send method that either succeeds and returns the txid or fails. This minimizes the possibility of an error occurring between the send event and recording the resulting txid to the database. Because zcash api requires other calls between sending and getting a txid (z_getoperationstatus) there is additional risk of failing to correctly record the txid after a send, which could easily lead to lost funds. Not following the standard send pattern also adds complexity and makes the application code “messy” with special cases for zcash.

Do I understand correctly that there is no equivalent z_send method?
Are there any examples of best practices to implement z_send safely? (python preferred)