code: func (nc *Conn) processPermissionsViolation(err string) {
  	nc.mu.Lock()
  	// create error here so we can pass it as a closure to the async cb dispatcher.
  	e := errors.New("nats: " + err)
  	nc.err = e
  	if nc.Opts.AsyncErrorCB != nil {
  		nc.ach.push(func() { nc.Opts.AsyncErrorCB(nc, nil, e) })
  	}
  	nc.mu.Unlock()
  }
docs: // processPermissionsViolation is called when the server signals a subject
  // permissions violation on either publish or subscribe.