code: func NewBundler(caBundleFile, intBundleFile string, opt ...Option) (*Bundler, error) {
  	var caBundle, intBundle []byte
  	var err error
  
  	if caBundleFile != "" {
  		log.Debug("Loading CA bundle: ", caBundleFile)
  		caBundle, err = ioutil.ReadFile(caBundleFile)
  		if err != nil {
  			log.Errorf("root bundle failed to load: %v", err)
  			return nil, errors.Wrap(errors.RootError, errors.ReadFailed, err)
  		}
  	}
  
  	if intBundleFile != "" {
  		log.Debug("Loading Intermediate bundle: ", intBundleFile)
  		intBundle, err = ioutil.ReadFile(intBundleFile)
  		if err != nil {
  			log.Errorf("intermediate bundle failed to load: %v", err)
  			return nil, errors.Wrap(errors.IntermediatesError, errors.ReadFailed, err)
  		}
  	}
  
  	if IntermediateStash != "" {
  		if _, err = os.Stat(IntermediateStash); err != nil && os.IsNotExist(err) {
  			log.Infof("intermediate stash directory %s doesn't exist, creating", IntermediateStash)
  			err = os.MkdirAll(IntermediateStash, 0755)
  			if err != nil {
  				log.Errorf("failed to create intermediate stash directory %s: %v",
  					IntermediateStash, err)
  				return nil, err
  			}
  			log.Infof("intermediate stash directory %s created", IntermediateStash)
  		}
  	}
  
  	return NewBundlerFromPEM(caBundle, intBundle, opt...)
  
  }
docs: // NewBundler creates a new Bundler from the files passed in; these
  // files should contain a list of valid root certificates and a list
  // of valid intermediate certificates, respectively.