code: public function process(HttpRequest $request, $requestType = self::MASTER_REQUEST)
  	{
  		$filter = function($result) {
  			return $result instanceof HttpResponse;
  		};
  		
  		try
  		{
  			$this->dispatcher->notify(new PrepareRequestEvent($request, $requestType, $this));
  			$response = $this->dispatcher->publishUntil(new FilterRequestEvent($request, $requestType, $this), $filter);
  			
  			if(!$response instanceof HttpResponse)
  			{
  				$response = $this->createNotFoundResponse($request);
  			}
  			
  			$event = new FilterResponseEvent($request, $requestType, $response, $this);
  			$this->dispatcher->notify($event);
  			
  			$response = $event->response;
  		}
  		catch(\Exception $e)
  		{
  			if($this->handleExceptions)
  			{
  				$response = $this->dispatcher->publishUntil(new HandleExceptionEvent($request, $requestType, $e, $this), $filter);
  			
  				if(!$response instanceof HttpResponse)
  				{
  					throw $e;
  				}
  			}
  			else
  			{
  				throw $e;
  			}
  		}
  		
  		$response->setProtocol($request->getProtocol());
  
  		return $response;
  	}
docs: {@inheritDoc}