performOptimisticUpdate

inline suspend fun <R> performOptimisticUpdate(    begin: () -> Unit,     commit: () -> Unit,     crossinline rollback: suspend () -> Unit,     noinline onSuccess: suspend () -> Unit? = null,     noinline onError: suspend (Exception) -> Unit? = null,     noinline onCanceled: suspend () -> Unit? = null,     noinline onFinished: suspend () -> Unit? = null,     block: () -> R): R

Executes begin and then block. If an operation succeed than commit is executed, otherwise rollback is executed. onSuccess, onError, onCanceled, onFinished are optional callbacks for additional actions.