code: func NewServer(cnf *config.Config) (*Server, error) {
  	broker, err := BrokerFactory(cnf)
  	if err != nil {
  		return nil, err
  	}
  
  	// Backend is optional so we ignore the error
  	backend, _ := BackendFactory(cnf)
  
  	srv := NewServerWithBrokerBackend(cnf, broker, backend)
  
  	// init for eager-mode
  	eager, ok := broker.(eager.Mode)
  	if ok {
  		// we don't have to call worker.Launch in eager mode
  		eager.AssignWorker(srv.NewWorker("eager", 0))
  	}
  
  	return srv, nil
  }
docs: // NewServer creates Server instance