public function dispatch(Request $request, Response $response = null)
{
$this->request = $request;
if (!$response) {
$response = new HttpResponse();
}
$this->response = $response;
$e = $this->getEvent();
$e->setName(MvcEvent::EVENT_DISPATCH);
$e->setRequest($request);
$e->setResponse($response);
$e->setTarget($this);
$result = $this->getEventManager()->triggerEventUntil(function ($test) {
return $test instanceof Response;
}, $e);
if ($result->stopped()) {
return $result->last();
}
return $e->getResult();
}