# File vapor/transaction.rb, line 95
    def do
      raise ArgumentError, "block required" unless block_given?

      self.begin

      begin
        @block_mode = true
        yield self
      rescue TransactionAbortedError  # aborted by user
      rescue                          # all other errors
        @block_mode = false
        self.abort
        raise
      ensure
        @block_mode = false
        self.commit if self.active?
      end

    end