title: async.parallel for app.use with second parameter
body: <p>I use <a href="https://www.npmjs.com/package/express" rel="nofollow noreferrer">express v4.17.1</a> and would like to make my app.use() middlewares to run in parallel.</p>
  <p>So I have found some examples in the internet.</p>
  <p><strong>Example:</strong></p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>function runInParallel() {
    async.parallel([
      getUserProfile,
      getRecentActivity,
      getSubscriptions,
      getNotifications
    ], function(err, results) {
      //This callback runs when all the functions complete
    });
  }</code></pre>
  </div>
  </div>
  </p>
  <p>But what I have in my application is:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>const app = express();
  const APP_FOLDER = "bdt";
  
  app.use(httpContext.middleware);
  app.use(metricsMiddleware);
  app.use(rtEndMiddleware);
  app.use(trackingContextMiddleware);
  app.use(healthRoutes());
  
  app.use("/" + APP_FOLDER + "/api/products", productsRoutes);
  app.use("/tcalc/" + APP_FOLDER + "/api/products", productsRoutes);</code></pre>
  </div>
  </div>
  </p>
  <p>productRoutes is this:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>const jsonParser = bodyParser.json({
    limit: "1mb",
  });
  
  const accessFilter = accessFilterMiddleware(Registry.list());
  const localDevFilter = localDevFilterMiddleware(Registry.list());
  
  const apiRoutes: Router = Router();
  
  
  apiRoutes.get("/", listProducts);
  apiRoutes.get("/healthz", cProductHealth);
  apiRoutes.get("/:id", accessFilter, localDevFilter, fetchProductData);
  apiRoutes.post(
    "/:id",
    accessFilter,
    localDevFilter,
    jsonParser,
    fetchProductData,
  );
  apiRoutes.get(
    "/:id/fields/:fieldId/options",
    accessFilter,
    localDevFilter,
    fetchProductOptions,
  );
  apiRoutes.post(
    "/:id/loadmoreoptions",
    accessFilter,
    localDevFilter,
    jsonParser,
    loadMoreOptions,
  );
  apiRoutes.post("/:id/ploy", accessFilter, jsonParser, fetchMultipleProductData);
  apiRoutes.post(
    "/:id/gxx",
    accessFilter,
    localDevFilter,
    jsonParser,
    fetchGssData,
  );
  apiRoutes.get("/:id/healthz", collectProductHealth);</code></pre>
  </div>
  </div>
  </p>
  <p>I think for the first ones it should be easy:</p>
  <p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>async.parallel([
    httpContext.middleware,
    metricsMiddleware,
    rtEndMiddleware,
    trackingContextMiddleware,
    healthRoutes()
  ], function(err, results) {
    //This callback runs when all the functions complete
  });</code></pre>
  </div>
  </div>
  </p>
  <p>But my question: How can I do it with a second parameter (productRoutes) in this case ?
  <div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-js lang-js prettyprint-override"><code>app.use("/" + APP_FOLDER + "/api/products", productsRoutes);
  app.use("/tcalc/" + APP_FOLDER + "/api/products", productsRoutes);</code></pre>
  </div>
  </div>
  </p>