diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index 4f279b36d..12634483e 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -809,7 +809,7 @@ class YoutubeBaseInfoExtractor(InfoExtractor):
             # Youtube sometimes sends incomplete data
             # See: https://github.com/ytdl-org/youtube-dl/issues/28194
             if not traverse_obj(response, *variadic(check_get_keys)):
-                retry.error = ExtractorError('Incomplete data received')
+                retry.error = ExtractorError('Incomplete data received', expected=True)
                 continue
 
             return response
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index db355ec92..49ee22865 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -5764,7 +5764,7 @@ class RetryManager:
         if not count:
             return warn(e)
         elif isinstance(e, ExtractorError):
-            e = remove_end(str(e.cause) or e.orig_msg, '.')
+            e = remove_end(str_or_none(e.cause) or e.orig_msg, '.')
         warn(f'{e}. Retrying{format_field(suffix, None, " %s")} ({count}/{retries})...')
 
         delay = float_or_none(sleep_func(n=count - 1)) if callable(sleep_func) else sleep_func