func (t *tx) End() error {
	t.mtx.Lock()
	defer t.mtx.Unlock()

	for t.ss.Peek() != rootSegment {
		t.EndSegment() // discarding errors?
	}
	return t.Tracer.EndTransaction(t.id)
}
func (t *tx) End() error {
	t.mtx.Lock()
	defer t.mtx.Unlock()

	for t.ss.Peek() != rootSegment {
		t.EndSegment() 
	}
	return t.Tracer.EndTransaction(t.id)
}
func ( t * tx ) End ( ) error { t . mtx . Lock ( ) defer t . mtx . Unlock ( ) for t . ss . Peek ( ) != rootSegment { t . EndSegment ( ) // discarding errors? } return t . Tracer . EndTransaction ( t . id ) }
// End ends a transaction.
End ends a transaction .