Issues with async values in Appdaemon for non-async app

 Add-on version: 0.17.7
 You are running the latest version of this add-on.
 System: Home Assistant OS 15.2  (aarch64 / raspberrypi4-64)
 Home Assistant Core: 2025.7.0
 Home Assistant Supervisor: 2025.06.2

Hi all, I’m having issues in my AppDaemon app due to adapi calls resolving to coroutines instead of values.

At a high level I’m listening for a state but I also support “additional_state_callback” that evaluates something to bool. That additional_state_callback is always true when getting an adapi call value as the coroutine itself evals to true.

# App - removed some stuff

class EntranceLight(ad.ADBase):
    def initialize(self):
        self.adapi = self.get_ad_api()

        self.entrance_light_switch = BaseEntity(
            self.adapi, ENTRANCE_LIGHT_SWITCH
        )
        
        self.motion_on_watcher = StateWatcher(self.adapi).watch_state(
            name="entrance_motion_on",
            entity_id=ENTRANCE_MOTION_SENSOR,
            states={"on"},
            callback=self.entrance_light_switch.turn_on,
            additional_state_callback=self._is_sun_down
        )

    def turn_on(self, **kwargs):
        if self.entrance_light_switch.is_on():
            return
        self.entrance_light_switch.turn_on()

    def _is_sun_down(self):
        sunset_offset = "sunset + 00:15:00"
        sunrise_offset = "sunrise - 00:15:00"
        return self.adapi.now_is_between(sunset_offset, sunrise_offset)
# StateWatcher -- trimmed
    # ...

    def watch_state(self, 
              name: str,
              entity_id: str,
              callback: Callable,
              states: set[str],
              delay_seconds: int = 0,
              entity_attribute: str = None, 
              callback_kwargs: dict = None, 
              additional_state_callback: Callable[[], bool] = None, # type: ignore
              ):
        watcher_id = str(uuid.uuid4())
        # ...

        def _new_state_internal(value):
            self.adapi.log(f"Is None: {additional_state_callback is None} -- {additional_state_callback is None or additional_state_callback()}")
            return value in states and (additional_state_callback is None or additional_state_callback())

        self.new_state_checkers[watcher_id] = _new_state_internal

        
        self.handles[watcher_id] = self.adapi.listen_state(
            self._handle,
            entity_id = entity_id,
            attribute = entity_attribute,
            new = _new_state_internal,
            duration = delay_seconds,
            watcher_id = watcher_id,
        )
        return self

When logging the additional_state_callback I get the following:

self.adapi.log(f"Is None: {additional_state_callback is None} -- {additional_state_callback is None or additional_state_callback()}")

INFO entrance_light: Is None: False -- <Task pending name='Task-5773' coro=<ADAPI.now_is_between() running at /usr/lib/python3.12/site-packages/appdaemon/adapi.py:2551> cb=[Futures.add_future.<locals>.safe_remove() at /usr/lib/python3.12/site-packages/appdaemon/futures.py:26]>