docs: function _pipe(method, args, done) {
  
    let proc;
    let isProc =
      typeof method === 'object' &&
      (method.constructor && method.constructor.name === 'ChildProcess');
  
    done = done || function () {};
  
    if (typeof args === 'function') {
      done = args;
      args = undefined;
    }
  
    // Ensure args array.
    args = args || [];
  
    // Allow passing args as a string.
    // supports either ' ' or ', '.
    if (typeof args === 'string') {
      let splitChar = ~args.indexOf(',') ? ',' : ' ';
      if (splitChar === ',')
        args = args.replace(/\s/g, '');
      args = args.split(splitChar);
    }
  
    // If string assume command set method to spawn.
    if (typeof method === 'string') {
      args = [method, args];
      method = spawn;
    }
  
    if (isProc)
      proc = method;
  
    if (!proc)
      proc = method(...args);
  
    const thru = thruHandler(done);
  
    proc.stdin = proc.stdin || process.stdin;
    proc.stdout = proc.stdout || process.stdout;
    proc.stderr = proc.stderr || process.stderr;
  
    proc.stdout.pipe(thru);
  
    return proc;
  
  }