code: def _run_callback(self, callback: Callable[[], Any]) -> None:
          
          try:
              ret = callback()
              if ret is not None:
                  from tornado import gen
  
                  # Functions that return Futures typically swallow all
                  # exceptions and store them in the Future.  If a Future
                  # makes it out to the IOLoop, ensure its exception (if any)
                  # gets logged too.
                  try:
                      ret = gen.convert_yielded(ret)
                  except gen.BadYieldError:
                      # It's not unusual for add_callback to be used with
                      # methods returning a non-None and non-yieldable
                      # result, which should just be ignored.
                      pass
                  else:
                      self.add_future(ret, self._discard_future_result)
          except asyncio.CancelledError:
              pass
          except Exception:
              app_log.error("Exception in callback %r", callback, exc_info=True)
docs: Runs a callback with error handling.
  
          .. versionchanged:: 6.0
  
             CancelledErrors are no longer logged.