code: function(done) {
      var p, parser, stream, _i, _len;
      parser = this.parser();
      stream = highland(this.source());
      if (_.isArray(parser)) {
        for (_i = 0, _len = parser.length; _i < _len; _i++) {
          p = parser[_i];
          stream = this._mapWith(p)(stream).flatten().compact();
        }
      } else {
        stream = this._mapWith(parser)(stream).flatten().compact();
      }
      stream = stream.reduce({}, _.merge);
      if (done == null) {
        return stream;
      }
      stream.pull(done);
      return this;
    }
docs: Loads all the sources and parses with a given parser, and merges the
  results together.
  
  Bad results (false, null, undefined) are skipped.
  
  @param {Function|null} done the callback, if provided, will be called
  with the result, and if not provided, the stream will be returned.
  
  @return {this|stream} depends on whether a callback is provided.
  
  @private