Loop com promessas

const testPromise = function (value) {
return new Promise(function (res, rej) {
console
.log('testPromise: ' + value)
value
>= 3 ? res() : rej()
})
}

var value = 1

const poll = function () {
testPromise
(value)
.then(() => {
console
.log('yay')
})
.catch(() => {
setTimeout
(() => {
value
+= 1
poll
()
}, value * 1000)
})
}

poll
()

Veja como funciona aqui: https://jsbin.com/wirumixojo/edit?html,js,console