text: const through = require('through2')
  
  module.exports = ObjectMultiplex
  
  function ObjectMultiplex (opts) {
    opts = opts || {}
    // create multiplexer
    var mx = through.obj(function (chunk, enc, cb) {
      var name = chunk.name
      var data = chunk.data
      var substream = mx.streams[name]
      if (!substream) {
        console.warn('orphaned data for stream ' + name)
      } else {
        substream.push(data)
      }
      return cb()
    })
    mx.streams = {}
    // create substreams
    mx.createStream = function (name) {
      var substream = mx.streams[name] = through.obj(function (chunk, enc, cb) {
        mx.push({
          name: name,
          data: chunk,
        })
        return cb()
      })
      mx.on('end', function () {
        return substream.emit('end')
      })
      if (opts.error) {
        mx.on('error', function () {
          return substream.emit('error')
        })
      }
      return substream
    }
    return mx
  }
  