While it will accomplish your goals, it will do it in a sequential manner. It will run the "test" function before each run to ensure that it should run again.
Their example is as follows:
var count = 0;
async.whilst(
function () { return count < 5; },
function (callback) {
count++;
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
}
);