I like this question, as a fun puzzle to solve. Bryan's approach is similar to how I am thinking about it.
1) What if there are two simultaneous calls to Broadcast that end up closing the
same channel (on line 46) twice? A panic would ensue due to the double close. (I've long
felt that this was a poor choice in Go's channel design, a double close should really be fine -- the
current design means that you almost always have to protect a close()
with a separate mutex, and check if the close has already happened first).
2) What Signal and Broadcast are called at the same time, and the lines are interleaved
36, 45, 46, 38: you would get a panic from trying to send on a closed channel, right?