getConcurrencyMiddleware<T> function

Middleware<T> getConcurrencyMiddleware <T>(
  1. List<Middleware<T>> middlewares
)

Concurrently launches middleware, the chain will continue if next() is called in all middlewares.

Warning: Error interrupts all others

Example:

getConcurrencyMiddleware([
  initializeUser,
  initializeSession,
  initializeDatabase,
]);

Implementation

Middleware<T> getConcurrencyMiddleware<T>(List<Middleware<T>> middlewares) {
  return (T context, FutureOr<void> Function() next) async {
    var concurrencies = await Future.wait(
      middlewares
          .map((middleware) => wrapMiddlewareNextCall(context, middleware)),
    );

    if (concurrencies.every((element) => element is bool)) {
      return next();
    }
  };
}