docs: def readable(self, timeout=2):
          """
          Checks whether self.recv() will block or not.
          Optional arguments:
          * timeout=1 - Wait for the socket to be readable,
              for timeout amount of time.
          """
          with self.lock:
              if len(self._buffer) > self._index:
                  return True
              else:
                  if self._select([self._socket], [], [], timeout)[0] == []:
                      return False
                  else:
                      return True