async Task ProcessYouTubeUrlAsync() { VideoMetaData = null; AudioOnlyStreamInfos = Array.Empty <AudioOnlyStreamInfo>(); CheckedAudioOnlyStreamInfoHashCode = NoSelection; ProcessYouTubeUrlButtonEnabled = false; DownloadButtonEnabled = false; Progress = 0; OpusAudioStreamPresent = false; ExtractOpus = false; try { var taskVideoMetaData = YouTubeDownloadApi.GetVideoMetaDataAsync(YouTubeUrl); var taskAudioOnlyStreamInfos = YouTubeDownloadApi.GetAudioOnlyStreamsAsync(YouTubeUrl); await Task.WhenAll(taskVideoMetaData, taskAudioOnlyStreamInfos); VideoMetaData = await taskVideoMetaData; AudioOnlyStreamInfos = await taskAudioOnlyStreamInfos; var highest = AudioOnlyStreamInfos.TryGetWithHighestBitrate(); CheckedAudioOnlyStreamInfoHashCode = highest?.GetHashCode() ?? NoSelection; OpusAudioStreamPresent = AudioOnlyStreamInfos.Any(a => a.IsOpus()); ExtractOpus = OpusAudioStreamPresent; } finally { DownloadButtonEnabled = true; ProcessYouTubeUrlButtonEnabled = true; } }