Strongly disagree. Async/await is a beautiful abstraction that allows writing and reasoning over structured code abstracting away the unstructured nature of executions.
I agree that go has a very elegant concurrency model, but it is not easier/more difficult or whatever than async/await. Reasoning over channels is just as challenging as reasoning over async await
The concept of red/blue functions (or whatever) is an issue but not critical. Explicitness is also important, you are informed that a function will (maybe) wait/be blocked for something. Go does this under the hood, but that requires an incredible scheduler that is fair and efficient