     return @_clientChain
 
 
+  # get the actual server chain, build it when it doesn't exist
   getServerChain: () ->
 
     unless @serverChain?

      if fn.error? then return fn
      result = chain.add fn
      if result?.error? then return result

  # load a string via require(), return a function, or return an error otherwise
  _load: (arg) ->

    # call the chain
    chain.run runOptions


  # users supply listeners based on which socket they apply to.
  # use generic functions cuz it's a similar pattern
  onClient      : (args...) -> @_fromArgs @getClientChain(), args
  onServer      : (args...) -> @_fromArgs @getServerChain(), args
  onServerClient: (args...) -> @_fromArgs @getServerClientChain(), args


  # look thru args and load stuff
  _fromArgs: (chain, args) ->
