Use promise to decouple controller and service.