// // DO NOT USE ConfigureAwait(false) WITH ProcessAsync() unless ensuring ProcessAsync() implementation is cross-thread compatible // ProcessAsync() often does a lot with forms in the UI context // /// <summary>Process the first valid product. Create default context</summary> /// <returns>Returns either the status handler from the process, or null if all books have been processed</returns> public static async Task <StatusHandler> ProcessFirstValidAsync(this IProcessable processable) { var libraryBook = processable.getNextValidBook(); if (libraryBook == null) { return(null); } return(await processBookAsync(processable, libraryBook)); }