Promise.allSettled on independent queries looks safe in autocommit once every statement carries its own Sync. Put them inside an explicit BEGIN and the first failed statement aborts the whole transaction, so later pipelined queries still send their own Sync and come back as the current transaction is aborted. Mixed DML settles as partial success at the client while the txn is already dead on that connection. Sequential await still has to own anything you share that BEGIN with, even when the statements never read each other.