code: def rollback(self, cb=None):
          '''
          Abandon all message publications and acks in the current transaction.
          Caller can specify a callback to use when the transaction has been
          aborted.
          '''
          # Could call select() but spec 1.9.2.5 says to raise an exception
          if not self.enabled:
              raise self.TransactionsNotEnabled()
  
          self.send_frame(MethodFrame(self.channel_id, 90, 30))
          self._rollback_cb.append(cb)
          self.channel.add_synchronous_cb(self._recv_rollback_okf rollback(self, cb=None):
          '''
          Abandon all message publications and acks in the current transaction.
          Caller can specify a callback to use when the transaction has been
          aborted.
          '''
          # Could call select() but spec 1.9.2.5 says to raise an exception
          if not self.enabled:
              raise self.TransactionsNotEnabled()
  
          self.send_frame(MethodFrame(self.channel_id, 90, 30))
          self._rollback_cb.append(cb)
          self.channel.add_synchronous_cb(self._recv_rollback_ok)
docs: Abandon all message publications and acks in the current transaction.
          Caller can specify a callback to use when the transaction has been
          aborted.