code: function mapAsList(arr, iter) {
      return reduce(arr, function(prev, entry, i) {
          return Q(iter(entry, i))
          .then(function(out) {
              prev.push(out);
              return prev;
          });
      }, []);
  }
docs: Map an array using an async (promised) iterator
  
  @param {Array|List} arr
  @param {Function(element, index)}
  @return {Promise<List>}