title: App architecture when using async/await on Windows Phone
body: <p>My question is related more to the architecture of an application that uses async and await.</p>
  
  <p>Let's say I have a Web Service that returns a JSON formatted list of <code>Books</code> (or any object for that matter). </p>
  
  <p>In a traditional implementation (without <code>async</code> and <code>await</code>) I would use three different classes: <code>BooksParser</code>, <code>BooksWebService</code> (singleton) and <code>BooksManager</code> (singleton) and in the <code>Page</code> where I need the list of books, I would have two delegate methods, one for success and one for error. So basically I would call <code>BooksManager</code> and <code>BooksManager</code> would call <code>BooksWebService</code>, the response would be downloaded asynchronously, passed to <code>BooksParser</code>, and <code>BooksParser</code> after parsing and creating the <code>List&lt;Book&gt;</code> would call on the main thread the delegate methods implemented in the <code>Page</code> (either the success one or the error one).</p>
  
  <p>I am having dificulties in understanding how to make the transition and use <code>async/await</code>. Lets say I keep the same three clases. In BooksManager and as well BooksWebService I would change the methods called initially to something like <code>async Task&lt;List&lt;Books&gt;&gt; GetBooks(...).</code> and I would call this method on <code>BooksManager</code> from my <code>Page</code> and await for its response. But the problem is that I can't really understand how I would handle the errors (eg: no Internet connection, or 4xx status code from the WebService).</p>
  
  <p>Should I do this using a try/catch approach or is there a cleaner way?</p>