Use async to implement subscription