def METHOD_NAME(self) -> None:
    try:
        self._job()
    except Exception as failure:  # pylint: disable=broad-exception-caught
        logger.exception(f"exception in batching dispatcher: {failure}")
        trace_info = traceback.format_exception(
            type(failure), failure, failure.__traceback__
        )
        logger.exception(f"{trace_info}")
    else:
        logger.debug("batcher finished normally")
        return
    finally:
        self._finished = True
    # call any registered handlers for FAILED. since we don't have
    # an event, pass empty list and let handler decide how to proceed
    failure_func = self._LOOKUP_MAP[identifiers.EVTYPE_ENSEMBLE_FAILED]
    failure_func([])
    logger.debug("Dispatcher thread exiting.")