You might need domain-level operations for at least two possible reasons:
- to provide an interface to higher-level domains. This is OK for procedures, but for functions seems a little more tricky; internally, the domain code runs under its dispatcher, and there could be concurrency issues unless the calling domain is using the same dispatcher.
- to support domain setup.