docs: def transaction_fail(self, name):
          """
          rollback a transaction if currently in one
  
          e -- Exception() -- if passed in, bubble up the exception by re-raising it
          """
          if not name:
              raise ValueError("Transaction name cannot be empty")
  
          if self.transaction_count > 0:
              logger.debug("{}. Failing transaction {}".format(self.transaction_count, name))
              if self.transaction_count == 1:
                  self._transaction_fail()
              else:
                  self._transaction_failing(name)
  
              self.transaction_count -= 1