diff --git a/lz4/frame/__init__.py b/lz4/frame/__init__.py
index 5fa03ce..b77c425 100644
--- a/lz4/frame/__init__.py
+++ b/lz4/frame/__init__.py
@@ -617,6 +617,17 @@ class LZ4FrameFile(_compression.BaseStream):
         # returns at least one byte (except at EOF)
         return self._buffer.peek(size)
 
+    def readall(self):
+        chunks = bytearray()
+
+        while True:
+            data = self.read(io.DEFAULT_BUFFER_SIZE)
+            chunks += data
+            if not data:
+                break
+
+        return bytes(chunks)
+
     def read(self, size=-1):
         """Read up to ``size`` uncompressed bytes from the file.
 
@@ -632,6 +643,9 @@ class LZ4FrameFile(_compression.BaseStream):
 
         """
         self._check_can_read()
+
+        if size < 0 and sys.version_info >= (3, 10):
+            return self.readall()
         return self._buffer.read(size)
 
     def read1(self, size=-1):
