Middleware type
HTTP middleware that wraps one outbound request.
Middleware is registered with client.use(...) and runs in insertion order:
the first registered middleware is the outermost wrapper.
type Middleware = { invoke(context: MiddlewareContext<D>, next: MiddlewareNext<R>) => Promise<R> }