Suggested tweak:

> … where a goroutine receiving on a channel exits before the upstream goroutines sending on the channel.

(Note:  I can't tell if "sending *on* a channel" and "receiving *on* a channel" sound wrong.  Maybe they do.  I'm just trying to avoid the awkward "upstream sending goroutines" construction at the end of the sentence.)