async def METHOD_NAME(
    self, prefix: str, recursive: bool = False, limit: Optional[int] = None
) -> AsyncIterator[BucketEntry]:
    if recursive:
        it = self._client.METHOD_NAME(prefix)
    else:
        it = self._client.walk_blobs(prefix)
    count = 0
    async for item in it:
        assert item.name is not None
        if isinstance(item, BlobPrefix):
            entry: BucketEntry = BlobCommonPrefix(
                bucket=self.bucket,
                key=item.name or "",
                size=0,
            )
        else:
            assert item.size is not None
            entry = BlobObject(
                bucket=self.bucket,
                key=item.name or "",
                size=item.size or 0,
                created_at=item.creation_time,
                modified_at=item.last_modified,
            )
        yield entry
        count += 1
        if count == limit:
            return