Close the UrlLoaderProxy on error.

Fixes #1680.
diff --git a/sky/packages/sky/lib/src/services/fetch.dart b/sky/packages/sky/lib/src/services/fetch.dart
index 7a92536..047241b 100644
--- a/sky/packages/sky/lib/src/services/fetch.dart
+++ b/sky/packages/sky/lib/src/services/fetch.dart
@@ -36,24 +36,25 @@
 }
 
 Future<UrlResponse> fetch(UrlRequest request) async {
+  UrlLoaderProxy loader = new UrlLoaderProxy.unbound();
   try {
-    UrlLoaderProxy loader = new UrlLoaderProxy.unbound();
     _networkService.ptr.createUrlLoader(loader);
     UrlResponse response = (await loader.ptr.start(request)).response;
-    loader.close();
     return response;
   } catch (e) {
     print("NetworkService unavailable $e");
     return new UrlResponse()..statusCode = 500;
+  } finally {
+    loader.close();
   }
 }
 
-Future<UrlResponse> fetchUrl(String relativeUrl) async {
+Future<UrlResponse> fetchUrl(String relativeUrl) {
   String url = Uri.base.resolve(relativeUrl).toString();
   UrlRequest request = new UrlRequest()
     ..url = url
     ..autoFollowRedirects = true;
-  return await fetch(request);
+  return fetch(request);
 }
 
 Future<Response> fetchBody(String relativeUrl) async {