https://github.com/machinebox/progress/blob/master/progress.go#L117-L142 you should do something like if counter.Err()!=nil { return } this will force the clannel be closed with your defered close(ch)