'Return buffered data without advancing the file position.
Always returns at least one byte of data, unless at EOF.
The exact number of bytes returned is unspecified.'

def peek(self, n=0):

    with self._lock:
        self._check_can_read()
        return self._buffer.peek(n)
