         throw error
     #.......................................................................................................
     else
-      send event
-      send.done()
+      outer_send event
+      outer_send.done()
     #.......................................................................................................
-    end() if end?
+    outer_end() if outer_end?
     return null
 
 

      #.....................................................................................................
      try
        on_stop   = PS.new_event_collector 'stop', ->
          send.done()
          help "(finished $call_stream #{method_name})"
        pipeline  = []
        pipeline.push await module[ method_name ] ctx, P...
        pipeline.push PS.$watch ( line ) ->
          if CND.isa_text line
            line = line + '\n' unless line.endsWith '\n'
            send [ '.', 'text', line, ( copy meta ), ]
          else
            send line
          return null
        pipeline.push on_stop.add PS.$drain()
        PS.pull pipeline...
      #.....................................................................................................

@$call_stream = ( S ) =>
  ### TAINT implicitly assumes return value will be lines of text ###
  # self = @
  return PIPEDREAMS.$async ( event, outer_send, outer_end ) =>
    #.......................................................................................................
    if event? and select event, '!', 'call_stream'
      { module, method_name, P, meta, locator, crumbs, }  = @_resolve_arguments S, event
