call the method self.read_limited with length of self.buffer subtracted from size as argument, add result to self.buffer, store it in result.
result = self . buffer + self . _read_limited ( size - len ( self . buffer ) )