def METHOD_NAME(self):  # type: () -> None
    with WsClient(self.ip, self.port, self.ca_file) as ws:
        while True:
            try:
                opcode, data = ws.read()
                data = data.decode('UTF-8')
                if opcode == OPCODE_PING:
                    ws.write(data=self.data, opcode=OPCODE_PONG)
                if opcode == OPCODE_TEXT:
                    if data == CORRECT_ASYNC_DATA:
                        self.async_response = True
                        Utility.console_log('Thread {} obtained correct async message'.format(self.name))
                # Keep sending pong to update the keepalive in the server
                if (time.time() - self.start_time) > 20:
                    break
            except Exception as e:
                Utility.console_log('Failed to connect to the client and read async data')
                self.exc = e  # type: ignore
    if self.async_response is not True:
        self.exc = RuntimeError('Failed to obtain correct async data')  # type: ignore