This is a bug with the async module, and there's an open issue on Github about this (issue #302.) The trouble is when node creates a new environment (using the vm module), the array checks async uses internally are invalid.
I fixed this by changing the Array check on line 472 in lib/async.js
from:
async.waterfall = function (tasks, callback) {
callback = callback || function () {};
if (tasks.constructor !== Array) {
to:
async.waterfall = function (tasks, callback) {
callback = callback || function () {};
if (!Array.isArray(tasks)) {
There are a few pull requests open to fix this issue, so hopefully this will be fixed soon.