The final, whole, answer is this:
I created a Location trigger in IFTTT to fire a webhook action. The webhook action calls a script located at https://script.google.com/home. This script looks like this:
function doGet(e) {
ScriptApp.newTrigger("notify")
.timeBased()
.after(5 * 60 * 1000)
.create();
}
function notify() {
UrlFetchApp.fetch("https://maker.ifttt.com/trigger/<my event name>/with/key/<my ifttt webhook key>");
}
The script sets up a 5 minute timer, which calls the second function in the script, which calls the IFTTT maker URL with an event name.
I then setup a webhook trigger which listens for the event and performs the required action, which turns off the light.
The light is turned on, initially, by a simple IFTTT Location trigger.
Some useful info: The script needs to be published as a web app to be called. The whole process of setting all this up required multiple steps of allowing google/ifttt to call each other, etc. Any time a change is made to the script, it needs to be re-published as a new version or it will not take effect.