code: function usecase(name) {
          let $queue = [];
          let $run;
          return { use };
          function use(arg) {
              let q = [].concat(arg);
              q = $enhancer ? q.map((t) => $enhancer(name, t)) : q;
              q.forEach(t => $queue.push(t));
              return $run || (() => {
                  $run = run;
                  $run.use = use;
                  return $run;
              })();
          }
          function run() {
              next($queue[Symbol.iterator](), arguments[0]);
          }
          ;
      }
docs: Compose queue
  
  @param {string} [name]
  @returns {Use}
  @example
  usecase('name').use([f1, f2])(param)
  usecase('name').use(f1).use(f2)(param)