I am sure there is some way we can make this more generic as a `Poller` service others could use. Might consider using promises to reject/resolve to determine whether to call the function again.