code: func (j *JWKClient) GetKey(ID string) (jose.JSONWebKey, error) {
  	j.mu.Lock()
  	defer j.mu.Unlock()
  
  	searchedKey, err := j.keyCacher.Get(ID)
  	if err != nil {
  		keys, err := j.downloadKeys()
  		if err != nil {
  			return jose.JSONWebKey{}, err
  		}
  		addedKey, err := j.keyCacher.Add(ID, keys)
  		if err != nil {
  			return jose.JSONWebKey{}, err
  		}
  		return *addedKey, nil
  	}
  
  	return *searchedKey, nil
  }
docs: // GetKey returns the key associated with the provided ID.