Async script

I have a script that turns off lots of switches, then delays by 30s, then turns off the last light.

I call this from other stuff. And due to the delay, each time I have to call service: script.turn_on on this.

But it’s easy to forget. Is there a way to make this script itself always return right away, but do the last delay async? So that I can call from other w/o using service: script.turn_on

Move the 30-second delay and final service call (that turns off the last light) out of the script and into its own script. Make the first script call the second script using script.turn_on. Now you can call the first script directly (service: script.first) and it will return promptly because the second script performs the delay.