[fix] only emit once for nested listeners