The simple idea is Communicating correctly with a choreography.[1]
The general notion is protocol, the tamed version is choreography. In particular, choreographies are deadlock-free.
In computer science, choreographic programming is a programming paradigm for distributed systems, where programs are written as compositions of interactions among multiple concurrent participants.[1][2][3][2]
It is an ongoing challenge to make choreographies easily deployable in a way that is integrated with commonly used programming languages. Existing projects worth noting are ᴄʜᴏʀᴀʟ, Pirouette, HasChor and chorex.