code: func Chain(handler *Handler, notify ...func()) *Handler {
  	if handler == nil {
  		return New(nil, notify...)
  	}
  	return New(handler.Signal, append(notify, handler.Close)...)
  }
docs: // Chain creates a new handler that invokes all notify functions when the critical section exits
  // and then invokes the optional handler's notifications. This allows critical sections to be
  // nested without losing exactly once invocations. Notify functions can invoke any cleanup needed
  // but should not exit (which is the responsibility of the parent handler).