package grawt import "sync" type CloseHandler struct { sync.Mutex waiter *Waiter Quit chan struct{} active bool autoDone bool handlerFunc *func() } func (ch *CloseHandler) Halt(err error) { ch.waiter.Halt(err) } func (ch *CloseHandler) Done() { ch.waiter.terminateHandler(ch, true) }