       return false
     }
 
-    if let success = success.value where success == true
-    { /* savor success */ }
-    else
-    {
-      print(success.error)
-      XCTFail()
+    switch success.result
+    {
+    case .Value(let success) where success == true: break // savor success
+    case .Value:            XCTFail("Failed without error")
+    case .Error(let error): XCTFail(String(error))
     }
 
     session.invalidateAndCancel()

    let canceled = deferred.cancel()
    XCTAssert(canceled)

    if let error = deferred.error
    {
      XCTAssertFalse(error is DeferredError)
      let e = error as NSError
      XCTAssert(e.domain == NSURLErrorDomain)
      XCTAssert(e.code == NSURLErrorCancelled)
    }
    else
    {
      XCTFail()
    }

    session.invalidateAndCancel()


    let deferred = session.deferredDownloadTask(request)

    switch deferred.result
    {
    case .Value(_, let handle, let response):
      let data = handle.readDataToEndOfFile()
      handle.closeFile()
      XCTAssert(data.length > 0)
      XCTAssert(response.statusCode == 404)
    case .Error(let error):
      XCTFail(String(error))
    }

    session.invalidateAndCancel()
