code: func TokenProviderWithEnvironmentVars() TokenProviderOption {
  	return func(provider *TokenProvider) error {
  		connStr := os.Getenv("EVENTHUB_CONNECTION_STRING")
  		if connStr != "" {
  			parsed, err := conn.ParsedConnectionFromStr(connStr)
  			if err != nil {
  				return err
  			}
  			provider.signer = NewSigner(parsed.KeyName, parsed.Key)
  			return nil
  		}
  
  		var (
  			keyName  = os.Getenv("EVENTHUB_KEY_NAME")
  			keyValue = os.Getenv("EVENTHUB_KEY_VALUE")
  		)
  
  		if keyName == "" || keyValue == "" {
  			return errors.New("unable to build SAS token provider because (EVENTHUB_KEY_NAME and EVENTHUB_KEY_VALUE) were empty, and EVENTHUB_CONNECTION_STRING was empty")
  		}
  		provider.signer = NewSigner(keyName, keyValue)
  		return nil
  	}
  }
docs: // TokenProviderWithEnvironmentVars creates a new SAS TokenProvider from environment variables
  //
  // There are two sets of environment variables which can produce a SAS TokenProvider
  //
  // 1) Expected Environment Variables:
  //   - "EVENTHUB_KEY_NAME" the name of the Event Hub key
  //   - "EVENTHUB_KEY_VALUE" the secret for the Event Hub key named in "EVENTHUB_KEY_NAME"
  //
  // 2) Expected Environment Variable:
  //   - "EVENTHUB_CONNECTION_STRING" connection string from the Azure portal
  //
  // looks like: Endpoint=sb://namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=superSecret1234=