RS
wg.Add в цикле а не перед циклом?2. для чисел есть https://golang.org/pkg/sync/atomic/ они эффективнее mutex’ов
3. а где именно race? может он в 17 строке при вызове
callback()?4. зачем выписывать
var isDone bool = false если можно воспользоваться type inference: isDone := false? 🙂

