diff --git a/Podfile.lock b/Podfile.lock
index cd4e9a9f9..2ba43b29a 100644
--- a/Podfile.lock
+++ b/Podfile.lock
@@ -138,7 +138,7 @@ CHECKOUT OPTIONS:
     :commit: 7054e4b13ee5bcd6d524adb6dc9a726e8c466308
     :git: https://github.com/WhisperSystems/JSQMessagesViewController.git
   SignalServiceKit:
-    :commit: 1d946ccfed4d83aa36f08642f2f527a0cf4b96d0
+    :commit: 173823e3adaf1ba5e7a3ab731c7d34f48be8cf3a
     :git: https://github.com/WhisperSystems/SignalServiceKit.git
   SocketRocket:
     :commit: 877ac7438be3ad0b45ef5ca3969574e4b97112bf
diff --git a/Signal/src/contact/OWSContactsManager.m b/Signal/src/contact/OWSContactsManager.m
index bf5313c87..a458a20f9 100644
--- a/Signal/src/contact/OWSContactsManager.m
+++ b/Signal/src/contact/OWSContactsManager.m
@@ -6,6 +6,7 @@
 #import "ContactsUpdater.h"
 #import "Environment.h"
 #import "Util.h"
+#import <SignalServiceKit/OWSError.h>
 
 #define ADDRESSBOOK_QUEUE dispatch_get_main_queue()
 
@@ -171,15 +172,19 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
 }
 
 - (void)intersectContacts
+{
+    [self intersectContactsWithRetryDelay:1.f];
+}
+
+- (void)intersectContactsWithRetryDelay:(CGFloat)retryDelaySeconds
 {
     void (^success)() = ^{
         DDLogInfo(@"%@ Successfully intersected contacts.", self.tag);
         [self fireSignalRecipientsDidChange];
     };
     void (^failure)(NSError *error) = ^(NSError *error) {
-
-        if ([error.domain isEqualToString:kContactsUpdaterErrorDomain]
-            && error.code == kContactsUpdaterRateLimitErrorCode) {
+        if ([error.domain isEqualToString:OWSSignalServiceKitErrorDomain]
+            && error.code == OWSErrorCodeContactsUpdaterRateLimit) {
             DDLogError(@"Contact intersection hit rate limit with error: %@", error);
             return;
         }
@@ -190,7 +195,7 @@ void onAddressBookChanged(ABAddressBookRef notifyAddressBook, CFDictionaryRef in
         //
         // TODO: Abort if another contact intersection succeeds in the meantime.
         dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
-            [self intersectContacts];
+            [self intersectContactsWithRetryDelay:retryDelaySeconds * 2.f];
         });
     };
     [[ContactsUpdater sharedUpdater] updateSignalContactIntersectionWithABContacts:self.allContacts