diff --git a/mercurial/keepalive.py b/mercurial/keepalive.py
index 3d414dce2d40bd8d20efdd0ac03659ed1aba2f7e_bWVyY3VyaWFsL2tlZXBhbGl2ZS5weQ==..49f8ba4febec5100ee84b49afef63e19879fa75d_bWVyY3VyaWFsL2tlZXBhbGl2ZS5weQ== 100644
--- a/mercurial/keepalive.py
+++ b/mercurial/keepalive.py
@@ -542,7 +542,11 @@
             return line
 
         # No newline in local buffer. Read until we find one.
-        chunks = [self._rbuf]
+        # readinto read via readinto will already return _rbuf
+        if self._raw_readinto is None:
+            chunks = [self._rbuf]
+        else:
+            chunks = []
         i = -1
         readsize = self._rbufsize
         while True: