cares: add AsyncListener support