this seems suspicious, when withTransaction uses `performRollback()` instead