It won't work. if the ```RollbackCommand``` is received before the ```PrepareCommand```, the ```RollbackCommand``` is discarded. So, when the ```PrepareCommand``` is received, it will be processed normally. 
That's why we need add the transaction to the ```completedTransactions``` map before the command invokes perform.