code: public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
      {
          $requestHandler = $request->getAttribute($this->handlerAttribute);
  
          if (empty($requestHandler)) {
              if ($this->continueOnEmpty) {
                  return $handler->handle($request);
              }
  
              throw new RuntimeException('Empty request handler');
          }
  
          if (is_string($requestHandler)) {
              $requestHandler = $this->container->get($requestHandler);
          }
  
          if (is_array($requestHandler) && count($requestHandler) === 2 && is_string($requestHandler[0])) {
              $requestHandler[0] = $this->container->get($requestHandler[0]);
          }
  
          if ($requestHandler instanceof MiddlewareInterface) {
              return $requestHandler->process($request, $handler);
          }
  
          if ($requestHandler instanceof RequestHandlerInterface) {
              return $requestHandler->handle($request);
          }
  
          if (is_callable($requestHandler)) {
              return (new CallableHandler($requestHandler))->process($request, $handler);
          }
  
          throw new RuntimeException(sprintf('Invalid request handler: %s', gettype($requestHandler)));
      }
docs: Process a server request and return a response.