|  |  | @ -12,6 +12,7 @@ public class ProfileFetcherJob: NSObject { | 
			
		
	
		
		
			
				
					
					|  |  |  |     let TAG = "[ProfileFetcherJob]" |  |  |  |     let TAG = "[ProfileFetcherJob]" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     let networkManager: TSNetworkManager |  |  |  |     let networkManager: TSNetworkManager | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     let socketManager: TSSocketManager | 
			
		
	
		
		
			
				
					
					|  |  |  |     let primaryStorage: OWSPrimaryStorage |  |  |  |     let primaryStorage: OWSPrimaryStorage | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // This property is only accessed on the main queue. |  |  |  |     // This property is only accessed on the main queue. | 
			
		
	
	
		
		
			
				
					|  |  | @ -33,6 +34,7 @@ public class ProfileFetcherJob: NSObject { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public init(networkManager: TSNetworkManager, ignoreThrottling: Bool = false) { |  |  |  |     public init(networkManager: TSNetworkManager, ignoreThrottling: Bool = false) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.networkManager = networkManager |  |  |  |         self.networkManager = networkManager | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         self.socketManager = TSSocketManager.shared() | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.primaryStorage = OWSPrimaryStorage.shared() |  |  |  |         self.primaryStorage = OWSPrimaryStorage.shared() | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.ignoreThrottling = ignoreThrottling |  |  |  |         self.ignoreThrottling = ignoreThrottling | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					|  |  | @ -113,24 +115,38 @@ public class ProfileFetcherJob: NSObject { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         let (promise, fulfill, reject) = Promise<SignalServiceProfile>.pending() |  |  |  |         let (promise, fulfill, reject) = Promise<SignalServiceProfile>.pending() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         self.networkManager.makeRequest( |  |  |  |         if self.socketManager.canMakeRequests { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             request, |  |  |  |             self.socketManager.make(request, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in |  |  |  |                 success: { (responseObject: Any?) -> Void in | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 do { |  |  |  |                     do { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject) |  |  |  |                         let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     fulfill(profile) |  |  |  |                         fulfill(profile) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 } catch { |  |  |  |                     } catch { | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         reject(error) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 failure: { (_: NSInteger, error: Error) in | 
			
		
	
		
		
			
				
					
					|  |  |  |                     reject(error) |  |  |  |                     reject(error) | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |             }) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         }, |  |  |  |         } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             failure: { (_: URLSessionDataTask?, error: Error?) in |  |  |  |             self.networkManager.makeRequest(request, | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                 success: { (_: URLSessionDataTask?, responseObject: Any?) -> Void in | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 if let error = error { |  |  |  |                     do { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                     reject(error) |  |  |  |                         let profile = try SignalServiceProfile(recipientId: recipientId, rawResponse: responseObject) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                         fulfill(profile) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |                     } catch { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |                 reject(ProfileFetcherJobError.unknownNetworkError) |  |  |  |                         reject(error) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         }) |  |  |  |                     } | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             }, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 failure: { (_: URLSessionDataTask?, error: Error?) in | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if let error = error { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         reject(error) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     reject(ProfileFetcherJobError.unknownNetworkError) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             }) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         return promise |  |  |  |         return promise | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |