Doesn't the token channel pattern described here have the same characteristics as a mutex lock (one goroutine can have query access at a time)? If you need to use a mutex lock to handle one edge case anyway, is there any reason to not use that mutex to control all access?

(sorry if I've missed an obvious detail here)