func NewXCloser(u io.Closer) *XCloser {
	x := &XCloser{u}
	runtime.SetFinalizer(x, func(x *XCloser) {
		x.Closer.Close()
	})
	return x
}
// NewXCloser attaches a finalizer to the object which calls Close.
// In cases when a cross-interface to this object is lost because of a failed remote worker,
// the attached finalizer will ensure that before we forget this object the channel it
// encloses will be closed.
NewXCloser attaches a finalizer to the object which calls Close.
In cases when a cross-interface to this object is lost because of a failed remote worker,
the attached finalizer will ensure that before we forget this object the channel it
encloses will be closed.
// NewXCloser attaches a finalizer to the object which calls Close . // In cases when a cross - interface to this object is lost because of a failed remote worker // the attached finalizer will ensure that before we forget this object the channel it // encloses will be closed .
func NewXCloser(u io.Closer) *XCloser {
	x := &XCloser{u}
	runtime.SetFinalizer(x, func(x *XCloser) {
		x.Closer.Close()
	})
	return x
}
func NewXCloser ( u io . Closer ) * XCloser { x := & XCloser { u } runtime . SetFinalizer ( x , func ( x * XCloser ) { x . Closer . Close ( ) } ) return x }
NewXCloser attaches a finalizer to the object which calls Close.
NewXCloser attaches a finalizer to the object which calls Close .