Currently, client sends a separate TX_BEGIN request when the user invokes ITransactions.BeginAsync API:
- Extra network request.
- Chosen tx coordinator (server node that handles TX_BEGIN request) is random and in most cases won't be the primary node for enlisted keys.
- On the client, do not send TX_BEGIN request when the user invokes ITransactions.BeginAsync. Instead, start the tx "on demand" when it is first used in some API.
- Send two requests at once to the same node where the first enlisted operation goes (according to partition awareness, if applicable).