impl-mutex.go
func (p *process) SetTeardown(tf TeardownFunc) {
	if tf == nil {
		panic("cannot set nil TeardownFunc")
	}

	p.Lock()
	if p.teardown != nil {
		panic("cannot SetTeardown twice")
	}

	p.teardown = tf
	select {
	case <-p.Closed():
		p.closeErr = tf()
	default:
	}
	p.Unlock()
}
func (p *process) SetTeardown(tf TeardownFunc) {
	if tf == nil {
		panic("cannot set nil TeardownFunc")
	}

	p.Lock()
	if p.teardown != nil {
		panic("cannot SetTeardown twice")
	}

	p.teardown = tf
	select {
	case <-p.Closed():
		p.closeErr = tf()
	default:
	}
	p.Unlock()
}
func ( p * process ) SetTeardown ( tf TeardownFunc ) { if tf == nil { panic ( " " ) } p . Lock ( ) if p . teardown != nil { panic ( " " ) } p . teardown = tf select { case <- p . Closed ( ) : p . closeErr = tf ( ) default : } p . Unlock ( ) }
// SetTeardown to assign a teardown function
SetTeardown to assign a teardown function