def _create_content_fetcher(self, access_token: str, rate_limit_config: dict):
        """Create a self-contained content fetcher that creates its own client."""

        async def fetch_content(page_id: str, breadcrumbs: List[Breadcrumb]) -> dict:
            """Fetch page content with a new client instance."""
            async with httpx.AsyncClient() as client:
                headers = {
                    "Authorization": f"Bearer {access_token}",
                    "Notion-Version": "2022-06-28",
                }

                # Create rate limiter
                rate_limiter = self._create_rate_limiter(rate_limit_config)

                # Create request helper
                async def make_request(method: str, url: str, **kwargs):
                    await rate_limiter()
                    response = await getattr(client, method.lower())(url, headers=headers, **kwargs)
                    response.raise_for_status()
                    return response.json()

                # Fetch all blocks and aggregate content
                result = await self._fetch_and_aggregate_blocks(make_request, page_id, breadcrumbs)

                return result

        return fetch_content
Create a self-contained content fetcher that creates its own client.
backend/airweave/platform/sources/notion.py