code: func (s *StanServer) startNATSServer() error {
  	if err := s.configureClusterOpts(); err != nil {
  		return err
  	}
  	if err := s.configureNATSServerTLS(); err != nil {
  		return err
  	}
  	opts := s.natsOpts
  	s.natsServer = server.New(opts)
  	if s.natsServer == nil {
  		return fmt.Errorf("no NATS Server object returned")
  	}
  	if stanLogger := s.log.GetLogger(); stanLogger != nil {
  		s.natsServer.SetLogger(stanLogger, opts.Debug, opts.Trace)
  	}
  	// Run server in Go routine.
  	go s.natsServer.Start()
  	// Wait for accept loop(s) to be started
  	if !s.natsServer.ReadyForConnections(10 * time.Second) {
  		return fmt.Errorf("unable to start a NATS Server on %s:%d", opts.Host, opts.Port)
  	}
  	return nil
  }
docs: // startNATSServer starts the embedded NATS server, possibly updating
  // the NATS Server's clustering and/or TLS options.