'Make a request to the data server and return the response.'

@utils.Synchronized
def SyncAndMakeRequest(self, command):

    if (not self._Sync()):
        self._RedoConnection()
    while (not self._SendRequest(command)):
        self._RedoConnection()
    self.sock.settimeout(config.CONFIG['HTTPDataStore.read_timeout'])
    response = self._ReadReply()
    if (not response):
        while True:
            self._RedoConnection()
            if (not self._SendRequest(command)):
                continue
            response = self._ReadReply()
            if response:
                break
    return response
