opts.go
func Register(server, shutdown interface{}, ignore ...func(error) bool) Option {
	return func(s *Sentinel) error {
		s.Lock()
		defer s.Unlock()

		if s.started {
			return ErrAlreadyStarted
		}

		return s.Register(server, shutdown, ignore...)
	}
}
func Register(server, shutdown interface{}, ignore ...func(error) bool) Option {
	return func(s *Sentinel) error {
		s.Lock()
		defer s.Unlock()

		if s.started {
			return ErrAlreadyStarted
		}

		return s.Register(server, shutdown, ignore...)
	}
}
// Register is a sentinel option to register a server, its shutdown listener,
// and ignore error handlers.
//
// Both server and shutdown can have a type of `func()`, `func() error`, or
// `func(context.Context) error`.