seems async.eachLimit has a mem leak.  queue does not

running async.queue works fine, does not run out of ram, but
async.eachLimit does.

So moral of the story, use async.eachLimit to fix the iteration logic,
error handling, etc for the callback chains, then switch to
async.queue in production to keep ram down to a manageable level