Because it allows multiple topologies of producers and consumers.
With CPS you may send and receive many times over to whomever and from whomever you like.
In JavaScript you may write..
const fetchData = async () => {
// snip
return data;
}
const data = await fetchData();
And in Go you might express the same like.. channel := make(chan int);
go func() {
// snip
channel <- data;
}()
data := <-channel
But you could also, for example, keep sending data and send it to as many consumers as you like.. go func() {
for { // Infinite loop:
// snip
channel1 <- data;
channel2 <- data;
channel3 <- data;
}
}()