 { jr
   is_empty }              = CND
 defer                     = setImmediate
+{ inspect, }              = require 'util'
+xrpr                      = ( x ) -> inspect x, { colors: yes, breakLength: Infinity, maxArrayLength: Infinity, depth: Infinity, }
 
 # https://pull-stream.github.io/#pull-through
 

  R = []
  R.push PS.$filter filter
  R.push PS.$watch ( d ) -> collector.push d
  R.push PS.$watch ( d ) -> whisper '10191', name, jr d
  R.push PS.$drain()
  return PS.pull R...

#-----------------------------------------------------------------------------------------------------------
@[ "$wye 1" ] = ( T, done ) ->
  probes_and_matchers = [
    [[["a","b","c"],[1,2,3,4,5,6]],[[1,2,3,4,5,6],["a","b","c"]],null]
    ]
  #.........................................................................................................
  for [ probe, matcher, error, ] in probes_and_matchers
    await T.perform probe, matcher, error, -> new Promise ( resolve, reject ) ->
      numbers             = []
      texts               = []
      R                   = [ numbers, texts, ]
      drainer             = -> resolve R
      source_1            = PS.new_push_source()
      source_2            = PS.new_push_source()
      #...................................................................................................
      bysource            = []
      bysource.push source_2
      bysource.push PS.$watch ( d ) -> whisper '10191-5', 'bysource', jr d
      # bysource.push PS.$defer()
      bysource            = PS.pull bysource...
      #...................................................................................................

      collector           = []
      clientline          = []
      clientline.push source_a
      clientline.push PS.$defer() if    use_defer_1
      clientline.push PS.$wye source_b, use_defer_3
      clientline.push PS.$defer() if    use_defer_2
      clientline.push PS.$collect { collector, }
      # clientline.push PS.$show()
      clientline.push PS.$drain -> resolve collector
