docs: async def prepare(self, request):
          """Prepare for streaming and send HTTP headers.
  
          :param request: regular aiohttp.web.Request.
          """
          if request.method != 'GET':
              raise HTTPMethodNotAllowed(request.method, ['GET'])
  
          if not self.prepared:
              writer = await super().prepare(request)
              self._loop = request.app.loop
              self._ping_task = self._loop.create_task(self._ping())
              # explicitly enabling chunked encoding, since content length
              # usually not known beforehand.
              self.enable_chunked_encoding()
              return writer
          else:
              # hackish way to check if connection alive
              # should be updated once we have proper API in aiohttp
              # https://github.com/aio-libs/aiohttp/issues/3105
              if request.protocol.transport is None:
                  # request disconnected
                  raise asyncio.CancelledError()