docs: def getchallenge(self):
          "Return server challenge"
          self.sock.send(CHALLENGE_PACKET)
          # wait challenge response
          for packet in self.read_iterator(self.CHALLENGE_TIMEOUT):
              if packet.startswith(CHALLENGE_RESPONSE_HEADER):
                  return parse_challenge_response(packet)