What problem are you facing?
The function runner assumes that the compose() and operate() methods are not async, so if an async method is used the result is the coroutine object instead of the actual function execution.
How could this Function help solve your problem?
Inspect the script function that is provided and await it if it is a coroutine, otherwise run it as it does today.