Called to perform any processing of the response required.

        This function stores any cookie data in the COOKIE_AUTH_KEY as a
        cookie in the response object. If the value is a empty string, the
        associated cookie is deleted instead.

        This function requires the response to be a aiohttp Response object,
        and assumes that the response has not started if the remember or
        forget functions are called during the request.

        Args:
            request: aiohttp Request object.
            response: response object returned from the handled view

        Raises:
            RuntimeError: Raised if response has already started.

async def process_response(self, request, response):
        """Called to perform any processing of the response required.

        This function stores any cookie data in the COOKIE_AUTH_KEY as a
        cookie in the response object. If the value is a empty string, the
        associated cookie is deleted instead.

        This function requires the response to be a aiohttp Response object,
        and assumes that the response has not started if the remember or
        forget functions are called during the request.

        Args:
            request: aiohttp Request object.
            response: response object returned from the handled view

        Raises:
            RuntimeError: Raised if response has already started.
        """
        await super().process_response(request, response)
        if COOKIE_AUTH_KEY in request:
            if response.started:
                raise RuntimeError("Cannot save cookie into started response")

            cookie = request[COOKIE_AUTH_KEY]
            if cookie == '':
                response.del_cookie(self.cookie_name)
            else:
                response.set_cookie(self.cookie_name, cookie)