Provided functionality possible by this pattern:
function myRecurser(arg) {
return new Promise((resolve, reject) => {
asyncCallback(arg, (result) => {
if (result) resolve(result);
else {
let newArg;
// Do stuff with newArg
resolve(myRecursor(newArg));
}
});
});
}