From an api definition object create the related api call method
    that will validate the arguments for the api call and then
    dynamically dispatch the request to the appropriate requests module
    convenience method for the specific HTTP verb .

def create_async_api_call_func(api, verb):
    """
    From an api definition object create the related api call method
    that will validate the arguments for the api call and then
    dynamically dispatch the request to the appropriate requests module
    convenience method for the specific HTTP verb .
    """

    # Scopes some local context in which we can build
    # request functions with reflection that primed with
    # some static parameters.
    def api_call_func(self, **kwargs):

        def _async_call_handler():
            api_method = getattr(self, api_method_name(verb, api))
            return api_method(**kwargs)

        return self._executor.submit(_async_call_handler)

    method_name = async_api_method_name(verb, api)

    api_call_func.__name__ = method_name
    api_call_func.__doc__ = "{}\nParameters:\n  {}".format(
        method_name, '\n  '.join(api.request_classes[verb]().keys()))

    return api_call_func