Tickers always tick, so if we tick every 5 seconds and the work that we
perform at each tick takes 5 seconds, we end up just looping with no
sleep period.
Instead this is using a timer to ensure we actually get a full 5 second
sleep between loops.
We should consider an async API instead of polling the provider like
this.