I have replied to another comment with more details: the channel mutex is not the same one that sync.Mutex is using.
The article that the OP article references does not show the code for their benchmark, but I must assume it's not using a large number of goroutines.