public async Task <LessonExtension> FetchLesson(Lesson lesson) { ILessonExtensionCrawler crawler; if (lesson.Version) { crawler = m_New; } else { crawler = m_Old; } var ext = lesson.Extension(); var ann = crawler.GetAnnouncements(lesson).Then(ext.Merge); var doc = crawler.GetDocuments(lesson).Then(ext.Merge); var ass = crawler.GetAssignments(lesson).Then(ext.Merge); await Task.WhenAll(ann, doc, ass); return(ext); }