import functools


def retry_with_fallback(triggering_error, **fallback_kwargs):
    """
    Rerun a function in case a specific error occurs with new arguments.
    
    :param triggering_error: Error class that triggers the decorator to re-run the function.
    :type triggering_error: Exception
    :param fallback_kwargs: Fallback named arguments that are applied when the function is re-run.
    :type fallback_kwargs: dict
    :return: Decorator.
    :rtype: func
    """
    def decorator(func):
        """
        Actual decorator
        """
        @functools.wraps(func)
        def func_wrapper(*args, **kwargs):
            try:
                function_result = func(*args, **kwargs)
            except triggering_error:
                kwargs.update(fallback_kwargs)
                function_result = func(*args, **kwargs)

            return function_result

        return func_wrapper

    return decorator