@@ -15,6 +15,25 @@ var shortid = require('shortid');
1515 ConnectionStatus [ ConnectionStatus [ "Authenticated" ] = 3 ] = "Authenticated" ;
1616} ) ( exports . ConnectionStatus || ( exports . ConnectionStatus = { } ) ) ;
1717var ConnectionStatus = exports . ConnectionStatus ;
18+ ( function ( MessageSendErrorCause ) {
19+ MessageSendErrorCause [ MessageSendErrorCause [ "NoAuth" ] = 1 ] = "NoAuth" ;
20+ MessageSendErrorCause [ MessageSendErrorCause [ "NoAck" ] = 2 ] = "NoAck" ;
21+ MessageSendErrorCause [ MessageSendErrorCause [ "Serialization" ] = 3 ] = "Serialization" ;
22+ MessageSendErrorCause [ MessageSendErrorCause [ "Transport" ] = 4 ] = "Transport" ;
23+ MessageSendErrorCause [ MessageSendErrorCause [ "Promise" ] = 5 ] = "Promise" ;
24+ } ) ( exports . MessageSendErrorCause || ( exports . MessageSendErrorCause = { } ) ) ;
25+ var MessageSendErrorCause = exports . MessageSendErrorCause ;
26+ var MessageSendError = ( function ( _super ) {
27+ __extends ( MessageSendError , _super ) ;
28+ function MessageSendError ( message , cause , source , data ) {
29+ _super . call ( this , message ) ;
30+ this . cause = cause ;
31+ this . source = source ;
32+ this . data = data ;
33+ }
34+ return MessageSendError ;
35+ } ) ( Error ) ;
36+ exports . MessageSendError = MessageSendError ;
1837var Client = ( function ( _super ) {
1938 __extends ( Client , _super ) ;
2039 function Client ( _a ) {
@@ -157,23 +176,23 @@ var Client = (function (_super) {
157176 var _this = this ;
158177 if ( timeout === void 0 ) { timeout = this . timeout ; }
159178 if ( this . status < ConnectionStatus . Connected ) {
160- return Promise . reject ( new Error ( 'Cannot send data across a socket that is not connected.' ) ) ;
179+ return Promise . reject ( new MessageSendError ( 'Cannot send data across a socket that is not connected.' , MessageSendErrorCause . NoAuth ) ) ;
161180 }
162181 var data ;
163182 try {
164183 data = JSON . stringify ( message ) ;
165184 }
166185 catch ( err ) {
167186 this . emit ( 'protocol:error' , err ) ;
168- return Promise . reject ( err ) ;
187+ return Promise . reject ( new MessageSendError ( 'Could not serialize message.' , MessageSendErrorCause . Serialization , err , message ) ) ;
169188 }
189+ this . emit ( 'raw:outgoing' , data ) ;
170190 try {
171- this . emit ( 'raw:outgoing' , data ) ;
172191 this . _socket . send ( data ) ;
173192 }
174193 catch ( err ) {
175194 this . emit ( 'transport:error' , err ) ;
176- return Promise . reject ( err ) ;
195+ return Promise . reject ( new MessageSendError ( 'An error occurred in the transport.' , MessageSendErrorCause . Transport , err , message ) ) ;
177196 }
178197 if ( message . id ) {
179198 var id = message . id ;
@@ -182,7 +201,9 @@ var Client = (function (_super) {
182201 id : id ,
183202 message : message ,
184203 deferred : deferred ,
185- timeout : setTimeout ( function ( ) { return deferred . reject ( new Error ( 'no ack' ) ) ; } , timeout )
204+ timeout : setTimeout ( function ( ) {
205+ deferred . reject ( new MessageSendError ( 'Did not receive acknowledgement in the timeout period.' , MessageSendErrorCause . NoAck , void 0 , message ) ) ;
206+ } , timeout )
186207 } ;
187208 var cleanup = function ( ) {
188209 clearTimeout ( pending . timeout ) ;
@@ -193,7 +214,7 @@ var Client = (function (_super) {
193214 return ack ;
194215 } , function ( err ) {
195216 cleanup ( ) ;
196- throw err ;
217+ throw new MessageSendError ( 'An error occurred during promise resolution' , MessageSendErrorCause . Promise , err , message ) ;
197218 } ) ;
198219 }
199220 else {
0 commit comments