public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
{
$session = $this->factory->newInstance($request->getCookieParams());
if ($this->name !== null) {
$session->setName($this->name);
}
$fragment = $session->getSegment(self::STORAGE_KEY);
$request = self::setAttribute($request, self::KEY, $session);
$request = self::startStorage($request, $fragment->get(self::STORAGE_KEY) ?: []);
$response = $next($request, $response);
$fragment->set(self::STORAGE_KEY, self::stopStorage($request));
return $response;
}