code: func (nc *Conn) processExpectedInfo() error {
  
  	c := &control{}
  
  	// Read the protocol
  	err := nc.readOp(c)
  	if err != nil {
  		return err
  	}
  
  	// The nats protocol should send INFO first always.
  	if c.op != _INFO_OP_ {
  		return ErrNoInfoReceived
  	}
  
  	// Parse the protocol
  	if err := nc.processInfo(c.args); err != nil {
  		return err
  	}
  
  	if nc.Opts.Nkey != "" && nc.info.Nonce == "" {
  		return ErrNkeysNotSupported
  	}
  
  	return nc.checkForSecure()
  }
docs: // processExpectedInfo will look for the expected first INFO message
  // sent when a connection is established. The lock should be held entering.