I think it might be too hard to make this function idempotent like the old one. Instead, we should focus on getting the client logic correct so that we only fire off a request to start a transaction *once*. If we do that, the function doesn't need to be idempotent.