dispatch
Runs action, which is what a Button does when tapped.
The gesture's authority stops at the call the gesture makes. An Action.Invoke's functionCall runs with InvocationContext.USER_ACTION, because openUrl is required to refuse an invocation that no user gesture caused and that distinction is carried by this parameter rather than inferred. An Action.Event's context and userMessage do not: they are bindings read to describe the event, which is the "dynamic data binding evaluation" the specification puts on the far side of that line.