Might `reset()` be getting called while the existing `done` and `Stopchan` values are being used in a different goroutine? Might not be a bad idea to run the race detector (http://blog.golang.org/race-detector) on this code to see if it gives us any warnings.