code: def check_last_err(func, self, *args, **kwargs):
      
  
      if self._last_err is not None:
          try:
              if six.PY2:
                  six.reraise(type(self._last_err), self._last_err,
                              self._last_tb)
              else:
                  # NB(directxman12): not using six.reraise in Python 3 leads
                  #                   to cleaner tracebacks, and raise x is valid
                  #                   syntax in Python 3 (unlike raise x, y, z)
                  raise self._last_err
          finally:
              if six.PY2:
                  del self._last_tb  # in case of cycles, break glass
  
              self._last_err = None
      else:
          return func(self, *args, **kwargs)
  
      @deco.decorator
      def check_last_err(func, self, *args, **kwargs):
          if self._last_err is not None:
              try:
                  raise self._last_err
              finally:
                  self._last_err = None
          else:
              return func(self, *args, **kwargs)
docs: Check and raise deferred errors before running the function
  
      This method checks :python:`_last_err` before running the wrapped
      function.  If present and not None, the exception will be raised
      with its original traceback.