Okay, so the idea here is that the receive loop is busy receiving messages and doesn't want to deal with its own goroutines and such, so it sends a message on a channel to another goroutine that is sending out echo RPCs.
The echo loop previously added, when running, also creates messages using the same mechanism now, so we have only one goroutine responsible for doing echo and incrementing counters.
Okay, so the idea here is that the receive loop is busy receiving messages and doesn't want to deal with its own goroutines and such, so it sends a message on a channel to another goroutine that is sending out echo RPCs.
The echo loop previously added, when running, also creates messages using the same mechanism now, so we have only one goroutine responsible for doing echo and incrementing counters.