 		let repoFullName = r.repo.fullName ?? "NoRepoFullName"
 		let repoNumber = r.number?.stringValue ?? "NoRepoNumber"
 		get("/repos/\(repoFullName)/pulls/\(repoNumber)", fromServer: r.apiServer, ignoreLastSync: false, parameters: nil, extraHeaders: nil,
-			success: { [weak self] response, data in
-
-				if let mergeInfo = (data as? NSDictionary)?.ofk("merged_by") as? NSDictionary {
-					DLog("detected merged PR: %@", r.title)
-
-					let mergeUserId = mergeInfo.ofk("id") as? NSNumber ?? -2
-					DLog("merged by user id: %@, our id is: %@", mergeUserId, r.apiServer.userId)
-
-					let mergedByMyself = mergeUserId.isEqualToNumber(r.apiServer.userId ?? -1)
-
-					if !(mergedByMyself && Settings.dontKeepPrsMergedByMe) {
-						self!.prWasMerged(r)
+			completion: { [weak self] response, data, error in
+
+				if error == nil {
+					if let mergeInfo = (data as? NSDictionary)?.ofk("merged_by") as? NSDictionary {
+						DLog("detected merged PR: %@", r.title)
+
+						let mergeUserId = mergeInfo.ofk("id") as? NSNumber ?? -2
+						DLog("merged by user id: %@, our id is: %@", mergeUserId, r.apiServer.userId)
+
+						let mergedByMyself = mergeUserId.isEqualToNumber(r.apiServer.userId ?? -1)
+
+						if !(mergedByMyself && Settings.dontKeepPrsMergedByMe) {
+							self!.prWasMerged(r)
+						} else {
+							DLog("will not announce merged PR: %@", r.title)
+						}
 					} else {
-						DLog("will not announce merged PR: %@", r.title)
+						self!.prWasClosed(r)
 					}
 				} else {
-					self!.prWasClosed(r)
+					let resultCode = response?.statusCode ?? 0
+					if resultCode == 404 || resultCode==410 { // PR gone for good
+						self!.prWasClosed(r)
+					} else { // fetch problem
+						r.postSyncAction = PostSyncAction.DoNothing.rawValue // don't delete this, we couldn't check, play it safe
+						r.apiServer.lastSyncSucceeded = false
+					}
 				}
 				callback()
-
-			}, failure: { [weak self] response, data, error in
-				let resultCode = response?.statusCode ?? 0
-				if resultCode == 404 || resultCode==410 { // PR gone for good
-					self!.prWasClosed(r)
-				} else { // fetch problem
-					r.postSyncAction = PostSyncAction.DoNothing.rawValue // don't delete this, we couldn't check, play it safe
-					r.apiServer.lastSyncSucceeded = false
-				}
-				callback()
-		})
+			})
 	}
 
 	private func prWasMerged(r: PullRequest) {

		callback:(data: AnyObject?, lastPage: Bool, resultCode: Int, etag: String?) -> Void) {

			get(path, fromServer: fromServer, ignoreLastSync: false, parameters: parameters, extraHeaders: extraHeaders,
				success: { [weak self] response, data in

					let allHeaders = response!.allHeaderFields
					fromServer.requestsRemaining = NSNumber(longLong: (allHeaders["X-RateLimit-Remaining"] as! NSString).longLongValue)
					fromServer.requestsLimit = NSNumber(longLong: (allHeaders["X-RateLimit-Limit"] as! NSString).longLongValue)
					let epochSeconds = (allHeaders["X-RateLimit-Reset"] as! NSString).doubleValue
					fromServer.resetDate = NSDate(timeIntervalSince1970: epochSeconds)
					NSNotificationCenter.defaultCenter().postNotificationName(API_USAGE_UPDATE, object: fromServer, userInfo: nil)

					let etag = allHeaders["Etag"] as? String
					let code = response!.statusCode ?? 0
					callback(data: data, lastPage: self!.lastPage(response!), resultCode: code, etag: etag)

				}, failure: { response, data, error in
					let code = response?.statusCode ?? 0
					if code != 304 {
						DLog("(%@) Failure for %@: %@", fromServer.label, path, error?.localizedDescription)
					}
					callback(data: nil, lastPage: false, resultCode: code, etag: nil)
			})
	}

	private func get(

							existingBackOff!.nextAttemptAt = NSDate(timeInterval: existingBackOff!.duration, sinceDate:NSDate())
						} else {
							DLog("(%@) Placing URL %@ on the throttled list", apiServerLabel, fullUrlPath)
							existingBackOff = UrlBackOffEntry(
								nextAttemptAt: NSDate(timeInterval: BACKOFF_STEP, sinceDate: NSDate()),
								duration: BACKOFF_STEP)
						}
						self!.badLinks[fullUrlPath] = existingBackOff
					}
					DLog("(%@) GET %@ - FAILED: %@", apiServerLabel, fullUrlPath, error!.localizedDescription)
				}

				dispatch_async(dispatch_get_main_queue()) {
					completion(response: response, data: parsedData, error: error)
				}

				#if os(iOS)
