             // FIXME: There's overlap here with loadIncident()'s onResponse…
             
             // Read back the server's copy.
-            // Should be a no-nop because we should have stored the updated incident and etag above.
+            // Should be a no-nop because we will store the updated incident and etag below.
+            // But if there's any error here, we should at least fetch the server copy.
 
             var etag: String? = nil
             
             defer {
-                loadIncident(number: number, etag: etag)
+                loadIncident(number: number, etag: etag, solo: true)
             }
 
             guard let json = json else {

    }


    func loadIncident(number number: Int, etag: String?) {
        let incidentURL = "\(self.url)incidents/\(number)"

        if

        }

        func onResponse(headers: HTTPHeaders, json: AnyObject?) {
            if !solo {
                removeConnectionForLoadingGroup(
                    group: IMSLoadingGroup.Incidents,
                    id: IMSConnectionID.Incidents(number)
                )
            }

            guard let incidentDictionary = json as? IncidentDictionary else {
                logError("Incident #\(number) JSON is non-conforming: \(json)")
