code: def handle(self, block, handler_name, request, suffix=''):
          
          handler = getattr(block, handler_name, None)
          if handler and getattr(handler, '_is_xblock_handler', False):
              # Cache results of the handler call for later saving
              results = handler(request, suffix)
          else:
              fallback_handler = getattr(block, "fallback_handler", None)
              if fallback_handler and getattr(fallback_handler, '_is_xblock_handler', False):
                  # Cache results of the handler call for later saving
                  results = fallback_handler(handler_name, request, suffix)
              else:
                  raise NoSuchHandlerError("Couldn't find handler %r for %r" % (handler_name, block))
  
          # Write out dirty fields
          block.save()
          return results
docs: Handles any calls to the specified `handler_name`.
  
          Provides a fallback handler if the specified handler isn't found.
  
          :param handler_name: The name of the handler to call
          :param request: The request to handle
          :type request: webob.Request
          :param suffix: The remainder of the url, after the handler url prefix, if available