recurse with process.nextTick()