       args.push outCallback
       outCallback = ()->
 
+    debug '_flow arity = ', args.length
+    debug '_flow err= ', err
     runFlow flowFns, err, args, outCallback
 
 

        outCallback err, output...
    argsToCall = args.concat fnDone 
    fn argsToCall...

_flow = (flowFns)->
  return (args..., outCallback)->  
    first = args[0]
    err = null
    debug 'first', first
    if first is null or first is undefined or _isError first
      err = args.shift()
      debug 'set err = ', err

    if typeof outCallback isnt 'function'
      args.push outCallback
      outCallback = ()->

    runFlow flowFns, err, args, outCallback

_chain = (chainFns)->
  return (args..., outCallback)-> 



runFlow = (fnFlows, err, args, outCallback)->
  errorHandlerArity = args.length + 2 # include err, callback
  if err
    fnFlows = cutFlowsByArity(fnFlows, errorHandlerArity)    
 
  return outCallback err, args... if fnFlows.length is 0 
