code: def __close_queue(self, a_future_object=None, a_future_func=None):
      # call this function when we Know the object is initialization is completed
      if self.__queue is None:
          return
  
      _queue = self.__queue
      self.__queue = None
      while True:
          # noinspection PyBroadException
          try:
              item, args, kwargs = _queue.get(block=False)
              if a_future_object:
                  future_func = getattr(
                      a_future_object, self.__future_func
                  )
                  the_object = future_func()
                  the_object_func = getattr(the_object, item)
                  the_object_func(*args, **kwargs)
              elif a_future_func:
                  the_object_func = getattr(a_future_func, item)
                  the_object_func(*args, **kwargs)
              else:
                  self.__nested_caller(item, args, kwargs)
          except Empty:
              break
          except Exception:
              # import traceback
              # stdout_print(''.join(traceback.format_exc()))
              pass
  
imports: import os
  from copy import deepcopy
  from time import sleep
  from concurrent.futures import ThreadPoolExecutor
  from typing import Any, Callable, Optional, Union, Generator, List, Type
  from zipfile import ZipFile, ZIP_DEFLATED
  from six.moves.queue import PriorityQueue, Queue, Empty
  from pathlib2 import Path
  from tempfile import mkstemp
  from collections import deque
  from threading import Thread
  from ..debugging.log import LoggerRoot
  from ..storage.util import format_size
label_desc: Use image node_id 4 for calling the _DeferredClass obj's underlying member method code with example usage: obj.__close_queue(a_future_object, a_future_func) without return types