Forgot to increment the variable "i" (the loop counter). Doh! My bad. I found it. Thanks for looking over my buggy code.
After I fixed that, I also discovered that, by ending the loop after two iterations, the goroutine ended, closed the channels, and then the main program detected the channel closing, rather than the timeout. Lovely.
As Benny Hill would say: "Learning all the time".
The book "Concurrency in Go" is absolutely fabulous, second only to The Go Programming Language.
We are so lucky to have all those good Go books.
Thanks again.
Jeff Kayser