code: func (c *ChainProvider) Retrieve() (Value, error) {
  	var errs errorList
  	for _, p := range c.Providers {
  		value, err := p.Retrieve()
  		if err == nil {
  			c.active = p
  			return value, nil
  		}
  		errs = append(errs, err)
  	}
  	c.active = nil
  
  	err := ErrNoValidProvidersFoundInChain
  	if len(errs) > 0 {
  		err = errs
  	}
  
  	return Value{}, err
  }
docs: // Retrieve returns the credentials value or error if no provider returned
  // without error. If a provider is found it will be cached.