///| pub(all) struct Middleware((Handler) -> Handler) derive(Debug) ///| fn chain(mws : Array[Middleware], handler : Handler) -> Handler { let mut h = handler for mw in mws.rev() { h = mw(h) } h }