completely remove state from Transaction: return result directly and re-throw exceptions