code: function forAsync(items, iter, callback) {
  	var keys = Object.keys(items);
  	var step = function (err, callback) {
  		nextTick(function () {
  			if (err) {
  				return callback(err);
  			}
  			if (keys.length === 0) {
  				return callback();
  			}
  			var key = keys.pop();
  			iter(items[key], key, function (err) {
  				step(err, callback);
  			});
  		});
  	};
  	step(null, callback);
  }
docs: for-each async style