|  |  | @ -102,7 +102,17 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  |     MessageError.prototype = new ReplayableError(); |  |  |  |     MessageError.prototype = new ReplayableError(); | 
			
		
	
		
		
			
				
					
					|  |  |  |     MessageError.prototype.constructor = MessageError; |  |  |  |     MessageError.prototype.constructor = MessageError; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     function UnregisteredUserError(number, httpError) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         this.name = 'UnregisteredUserError'; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         this.number = number; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         this.code = httpError.code; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         this.message = httpError.message; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         this.stack = httpError.stack; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     UnregisteredUserError.prototype = new Error(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     UnregisteredUserError.prototype.constructor = UnregisteredUserError; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     window.textsecure.UnregisteredUserError = UnregisteredUserError; | 
			
		
	
		
		
			
				
					
					|  |  |  |     window.textsecure.SendMessageNetworkError = SendMessageNetworkError; |  |  |  |     window.textsecure.SendMessageNetworkError = SendMessageNetworkError; | 
			
		
	
		
		
			
				
					
					|  |  |  |     window.textsecure.IncomingIdentityKeyError = IncomingIdentityKeyError; |  |  |  |     window.textsecure.IncomingIdentityKeyError = IncomingIdentityKeyError; | 
			
		
	
		
		
			
				
					
					|  |  |  |     window.textsecure.OutgoingIdentityKeyError = OutgoingIdentityKeyError; |  |  |  |     window.textsecure.OutgoingIdentityKeyError = OutgoingIdentityKeyError; | 
			
		
	
	
		
		
			
				
					|  |  | @ -38570,9 +38580,13 @@ OutgoingMessage.prototype = { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     transmitMessage: function(number, jsonData, timestamp) { |  |  |  |     transmitMessage: function(number, jsonData, timestamp) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return this.server.sendMessages(number, jsonData, timestamp).catch(function(e) { |  |  |  |         return this.server.sendMessages(number, jsonData, timestamp).catch(function(e) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (e.name === 'HTTPError' && (e.code !== 409 && e.code !== 410 && e.code !== 404)) { |  |  |  |             if (e.name === 'HTTPError' && (e.code !== 409 && e.code !== 410)) { | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                 // 409 and 410 should bubble and be handled by doSendMessage
 |  |  |  |                 // 409 and 410 should bubble and be handled by doSendMessage
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 // 404 should throw UnregisteredUserError
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 // all other network errors can be retried later.
 |  |  |  |                 // all other network errors can be retried later.
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (e.code === 404) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     throw new textsecure.UnregisteredUserError(number, e); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 throw new textsecure.SendMessageNetworkError(number, jsonData, e, timestamp); |  |  |  |                 throw new textsecure.SendMessageNetworkError(number, jsonData, e, timestamp); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |             throw e; |  |  |  |             throw e; | 
			
		
	
	
		
		
			
				
					|  |  | 
 |