code: function ArrayEmitter(arr, op) {
    op = op || {};
    this.readable = true;
    this.paused   = !!op.pause;
  
    this.arr = arr || [];
    this.len = (arr instanceof Array) 
      ? arr.length
      : Object.keys(arr).length;
    this.i   = 0;
    this.op  = op;
  
    if (!this.paused) nextTick(emit.bind(this));
  
  }
docs: create object that emit array iteration events
  @constructor
  
  @param {Array} or {Object} arr
  @param {Object} op
  {boolean} tolerant  if true, continue iteration even if errors occurred
  
  @event {elem} function(key, value)
  Emitted when received an element
  
  @event {data} function(data)
  Emitted when received an element, only value is emitted
  
  @event {end} function()
  Emitted when reached end
  
  @event {error} function(e)
  Emitted when an error occurred