async def call_async(self, method, **parameters):
        """Makes an async call to the API.

        :param method: The method name.
        :param params: Additional parameters to send (for example, search=dict(id='b123') )
        :return: The JSON result (decoded into a dict) from the server.abs
        :raise MyGeotabException: Raises when an exception occurs on the MyGeotab server.
        :raise TimeoutException: Raises when the request does not respond after some time.
        """
        if method is None:
            raise Exception('A method name must be specified')
        params = api.process_parameters(parameters)
        if self.credentials and not self.credentials.session_id:
            self.authenticate()
        if 'credentials' not in params and self.credentials.session_id:
            params['credentials'] = self.credentials.get_param()

        try:
            result = await _query(self._server, method, params,
                                  verify_ssl=self._is_verify_ssl, loop=self.loop)
            if result is not None:
                self.__reauthorize_count = 0
            return result
        except MyGeotabException as exception:
            if exception.name == 'InvalidUserException':
                if self.__reauthorize_count == 0 and self.credentials.password:
                    self.__reauthorize_count += 1
                    self.authenticate()
                    return await self.call_async(method, **parameters)
                else:
                    raise AuthenticationException(self.credentials.username,
                                                  self.credentials.database,
                                                  self.credentials.server)
            raise
async def call_async ( self , method , ** parameters ) : if method is None : raise Exception ( 'A method name must be specified' ) params = api . process_parameters ( parameters ) if self . credentials and not self . credentials . session_id : self . authenticate ( ) if 'credentials' not in params and self . credentials . session_id : params [ 'credentials' ] = self . credentials . get_param ( ) try : result = await _query ( self . _server , method , params , verify_ssl = self . _is_verify_ssl , loop = self . loop ) if result is not None : self . __reauthorize_count = 0 return result except MyGeotabException as exception : if exception . name == 'InvalidUserException' : if self . __reauthorize_count == 0 and self . credentials . password : self . __reauthorize_count += 1 self . authenticate ( ) return await self . call_async ( method , ** parameters ) else : raise AuthenticationException ( self . credentials . username , self . credentials . database , self . credentials . server ) raise
Makes an async call to the API.

        :param method: The method name.
        :param params: Additional parameters to send (for example, search=dict(id='b123') )
        :return: The JSON result (decoded into a dict) from the server.abs
        :raise MyGeotabException: Raises when an exception occurs on the MyGeotab server.
        :raise TimeoutException: Raises when the request does not respond after some time.