public function execute(ServerRequestInterface $request, string $eventBaseName)
    {
        $processEventName = sprintf('%s%s', $this->processSuffix, $eventBaseName);

        $this->logger->debug(
            'Processing started',
            [
                'Request method' => $request->getMethod(),
                'Event name' => $processEventName,
                'Controller' => static::class
            ]
        );

        $processEvent = new ProcessEvent($request);

        try {
            $processEvent = $this->eventDispatcher->dispatch($processEventName, $processEvent);
        } catch (\Exception $processException) {
            $this->logger->error(
                'Process error',
                [
                    'Request method' => $request->getMethod(),
                    'Event name' => $processEventName,
                    'Controller' => static::class,
                    'Exception' => $processException
                ]
            );

            $processEvent->setResponse($processException);
        }

        $responseEvent = new ResponseEvent();
        $responseEvent->setResponse($processEvent->getResponse());

        $responseEventName = sprintf('%s%s', $this->responseSuffix, $eventBaseName);
        $this->logger->debug(
            'Rendering started',
            [
                'Event name' => $responseEventName,
            ]
        );

        $responseEvent = $this->eventDispatcher->dispatch($responseEventName, $responseEvent);
        return $responseEvent->getResponse();
    }