code: function AsyncIterator(list) {
  	if (typeof list !== 'object' ) {
  		throw 'Lists must be either arrays or objects.';
  	}
  	if (Array.isArray(list)) {
  		this._len=list.length;
  	} else {
  		this._len=Object.keys(list).length;
  	}
  	this._list=list;
  }
docs: /*
  simple home made iterator of asynchronous operations done on an array or on an object.
  usage:
  var list=[1,2,3];
  var i=AsyncIterator(list);
  i.run(function (i,next) {
  someAsynchronousFunctionWithCallback(list[i],function (err,whatever) {
  if (err) {
  this will not cause the loop to stop
  next(err);
  return;
  }
  process 'whatever' if you have to
  next();
  });
  },function (errors) {
  if (errors) {
  handle them: it is a list since it will collect all errors
  }
  done
  });