code: def add_resource_subscription_async(self, device_id, resource_path, callback_fn,
                                          fix_path=True, queue_size=5):
          
          queue = self.add_resource_subscription(device_id, resource_path, fix_path, queue_size)
  
          # Setup daemon thread for callback function
          t = threading.Thread(target=self._subscription_handler,
                               args=[queue, device_id, resource_path, callback_fn])
          t.daemon = True
          t.start()
docs: Subscribe to resource updates with callback function.
  
          When called on a valid device and resource path a subscription is setup so that
          any update on the resource path value triggers an update on the callback function.
  
          :param device_id: Name of device to set the subscription on (Required)
          :param resource_path: The resource path on device to observe (Required)
          :param callback_fn: Callback function to be executed on update to subscribed resource
          :param fix_path: Removes leading / on resource_path if found
          :param queue_size: Sets the Queue size. If set to 0, no queue object will be created
          :returns: void