code: async def _async_render(self, *, url: str, script: str = None, scrolldown, sleep: int, wait: float, reload, content: Optional[str], timeout: Union[float, int], keep_page: bool):
          
          try:
              page = await self.browser.newPage()
  
              # Wait before rendering the page, to prevent timeouts.
              await asyncio.sleep(wait)
  
              # Load the given page (GET request, obviously.)
              if reload:
                  await page.goto(url, options={'timeout': int(timeout * 1000)})
              else:
                  await page.goto(f'data:text/html,{self.html}', options={'timeout': int(timeout * 1000)})
  
              result = None
              if script:
                  result = await page.evaluate(script)
  
              if scrolldown:
                  for _ in range(scrolldown):
                      await page._keyboard.down('PageDown')
                      await asyncio.sleep(sleep)
              else:
                  await asyncio.sleep(sleep)
  
              if scrolldown:
                  await page._keyboard.up('PageDown')
  
              # Return the content of the page, JavaScript evaluated.
              content = await page.content()
              if not keep_page:
                  await page.close()
                  page = None
              return content, result, page
          except TimeoutError:
              await page.close()
              page = None
              return None
docs: Handle page creation and js rendering. Internal use for render/arender methods.