This looks very similar to AbstractTransactionBoundaryCommand.perform.