Accepts a server-side request and a response instance, and does
something with them.
If the response is not complete and/or further processing would not
interfere with the work done in the middleware, or if the middleware
wants to delegate to another process, it can use the $out callable
if present.
If the middleware does not return a value, execution of the current
request is considered complete, and the response instance provided will
be considered the response to return.
Alternately, the middleware may return a response instance.
Often, middleware will return $out();, with the assumption that a
later middleware will return a response.