docs: def _Execute(self, funcname, *args, **kwargs):
      """Send an RPC request to the gdb-internal python.
  
      Blocks for 3 seconds by default and returns any results.
      Args:
        funcname: the name of the function to call.
        *args: the function's arguments.
        **kwargs: Only the key 'wait_for_completion' is inspected, which decides
          whether to wait forever for completion or just 3 seconds.
      Returns:
        The result of the function call.
      """
      wait_for_completion = kwargs.get('wait_for_completion', False)
      rpc_dict = {'func': funcname, 'args': args}
      self._Send(json.dumps(rpc_dict))
      timeout = TIMEOUT_FOREVER if wait_for_completion else TIMEOUT_DEFAULT
  
      result_string = self._Recv(timeout)
  
      try:
        result = json.loads(result_string, object_hook=self._JsonDecodeDict)
        if isinstance(result, unicode):
          result = self._TryStr(result)
        elif isinstance(result, list):
          result = self._JsonDecodeList(result)
      except ValueError:
        raise ValueError('Response JSON invalid: ' + str(result_string))
      except TypeError:
        raise ValueError('Response JSON invalid: ' + str(result_string))
  
      return result