def METHOD_NAME(*args, **kwargs):
    # Defer the call to get_event_loop so that, if a custom policy is
    # installed after the autoasync decorator, it is respected at call time
    local_loop = get_event_loop() if loop is None else loop
    # Inject the 'loop' argument. We have to use this signature binding to
    # ensure it's injected in the correct place (positional, keyword, etc)
    if pass_loop:
        bound_args = old_sig.bind_partial()
        bound_args.arguments.update(
            loop=local_loop,
            **new_sig.bind(*args, **kwargs).arguments)
        args, kwargs = bound_args.args, bound_args.kwargs
    if forever:
        _launch_forever_coro(coro, args, kwargs, local_loop)
        local_loop.run_forever()
    else:
        return local_loop.run_until_complete(coro(*args, **kwargs))