It’s pretty simple: just configure any number of intervals, a callback in case of success, a callback in case of failure, and the function that checks the server
// could be anything asynchronous
// checkback succeded and the end of one interval
// stops the poller and callback
// after the third attempt, exits calling the failback
.start(); // start the process
Each callback(), failback(), checkback() run in the Poller context, means that this operator points to the Poller instance.
A bunch of additional methods are available like: start(), stop(), restart(), next().
To do: implement Deferred pattern for the method that checks the server
Update: Update with a GitHub repository and support for deferred/promise.