change poller to promise style