code: def _inner_abort_cb_wrapper(self):
      # store the task object because we might nullify it
      task = self._task
      # call the user abort callback
      try:
          if self._abort_cb:
              self._abort_cb()
          self._cb_completed = True
      except SystemError:
          # we will get here if we killed the thread externally,
          # we should not try to mark as completed, just leave the thread
          return
      except BaseException as ex:  # noqa
          if task and task.log:
              task.log.warning(
                  "### TASK STOPPING - USER ABORTED - CALLBACK EXCEPTION: {} ###".format(
                      ex
                  )
              )
  
      # set runtime property, abort completed for the agent to know we are done
      if task:
          # noinspection PyProtectedMember
          task._set_runtime_properties(
              {self.property_abort_callback_completed: 1}
          )
  
file_path: clearml/clearml/backend_interface/task/development/worker.py
imports: import attr
  from threading import Thread
  from time import time
  from ....config import deferred_config
  from ....backend_interface.task.development.stop_signal import TaskStopSignal
  from ....backend_api.services import tasks
  from ....utilities.lowlevel.threads import kill_thread
  from ....utilities.process.mp import SafeEvent
label_desc: Use image node_id 5 for calling the DevWorker obj's underlying member method code with example usage: obj._inner_abort_cb_wrapper() without return types