public async Task <Monad <string> > GetShakespeareanDescription(string name) { var descriptions = await _pokemonRepo.GetDescriptionForSpecies(name, "en"); if (descriptions.Exception is not null) { return(new Monad <string>(descriptions.Exception)); } var pickRandom = await _featureManager.IsEnabledAsync(FeatureFlags.RandomDescription); var values = descriptions.Result !; _logger.LogInformation("Picking {selectionMode} description for {species}", pickRandom ? "random" : "first", name); var text = pickRandom switch { false => values.First(), true => values.ElementAt(_random.Next(0, values.Count)) }; var translation = await _translationService.GetShakespeareanTranslation(text); return(translation switch { { Result : not null } => new Monad <string>(translation.Result),