def METHOD_NAME(self, abort_signal: Signal, fl_ctx: FLContext) -> None:
    task_data = self.processor.create_task_data(self.task_name, fl_ctx)
    if not isinstance(task_data, Shareable):
        self.system_panic(
            f"ResponseProcessor {type(self.processor)} failed to return valid task data: "
            f"expect Shareable but got {type(task_data)}",
            fl_ctx,
        )
        return
    task = Task(
        name=self.task_name,
        data=task_data,
        timeout=self.timeout,
        result_received_cb=self._process_client_response,
    )
    self.broadcast_and_wait(
        task=task,
        wait_time_after_min_received=self.wait_time_after_min_received,
        fl_ctx=fl_ctx,
        abort_signal=abort_signal,
        targets=self.clients,
        min_responses=self.min_responses_required,
    )
    success = self.processor.final_process(fl_ctx)
    if not success:
        self.system_panic(reason=f"ResponseProcessor {type(self.processor)} failed final check!", fl_ctx=fl_ctx)