use new asyncListener api