code: function emit() {
    var self = this;
    (function execute() {
      try {
        if(self.i >= self.length) {
          self.emit('end');
        }
        else {
          var k = self.keys[self.i];
          self.emit('data', self.arr[k], k); 
          self.i++;
          if (!self.paused) nextTick(execute);
        }
      } catch (e) {
        self.emit('error', e);
        if (self._options.tolerant) {
          self.i++;
          if (!self.paused) nextTick(execute);
        }
        else {
          self.emit('end');
          self.readable = false;
        }
      }
    })();
  }
docs: private function