docs: def _run_done_callbacks(self):
          ''' Run the callbacks and remove the callbacks from the internal
              List so they do not get run again if done is notified more than once.
          '''
          with self._callbacks_lock:
              for callback in self._done_callbacks:
                  try:
                      callback()
                  # We do not want a callback interrupting the process, especially
                  # in the failure cleanups. So log and catch, the excpetion.
                  except Exception as ex:
                      logger.error("Exception: %s" % str(ex))
                      logger.error("Exception raised in %s." % callback, exc_info=True)
  
              self._done_callbacks = []