Mustache notation not working in Call Service Node

I have a function feeding in to a Call Service Node. This is the function code:

let state = context.get("door_state");
if (state === undefined) {
    state = 0;
}
state ^= 1;
context.set("door_state", state);
msg.service = state ? "turn_on" : "turn_off";
return msg;

A debug out shows that this is working the way I want, it toggles between turn_on and turn_off in the msg.service variable. The Call Service Node has {{service}} in the service field. But I am getting the error "Error call service, home assistant api error. Error Message: Service not found."

I assume the Call Service node is one of the Home Assistant nodes given its blue colour? It isn't a core node of Node-RED, so often helpful to be explicit.

Does that node's help say it supports mustache syntax in its fields? Nodes typically don't aside from the odd exception.

Yes sorry, it is home assistant. Other fields work fine with mustache syntax. It says that mustache syntax works with the entity_id and data fields. However I found that it also works with the domain field. So I suppose it just doesn't happen to work with the service field?