The author appears to contradict the very issue they argue, by presenting languages such as Go, Erlang or their own toy language. These languages hide the async / await constructs that are present in languages like Rust, Swift or Typescript. The former languages and runtimes have no function colouring problems, when working within their own SDKs. There are trade offs, and these “async” languages tend to be a bit more awkward when interacting with OS frameworks.
“OceanGate’s submersibles are the only known vessels to use real-time (RTM) hull health monitoring. With this RTM system, we can determine if the hull is compromised well before situations become life-threatening, and safely return to the surface. This innovative safety system is not currently covered by any classing agency.”
the only challenge here is that upstream senders will block when your channel(s) are full. This is not inherently bad, but if you have a circular dependency, you can deadlock because queues (channels) are bounded and may fill up. There are solutions to that too, but you have to build that in