@@ -132,6 +132,7 @@ export class BoilingData {
132132 private creds ?: BDCredentials ;
133133 private socketInstance : ISocketInstance ;
134134 private logger : Console ;
135+ private closedPromise ?: Promise < void > ;
135136
136137 constructor ( public props : IBoilingData ) {
137138 this . logger = createLogger ( { name : "boilingdata" , logLevel : this . props . logLevel ?? "info" } ) ;
@@ -173,43 +174,47 @@ export class BoilingData {
173174
174175 public async close ( ) : Promise < void > {
175176 this . socketInstance . socket ?. close ( 1000 ) ;
177+ if ( this . closedPromise ) await this . closedPromise ;
176178 }
177179
178180 public async connect ( ) : Promise < void > {
179181 return new Promise ( ( resolve , reject ) => {
180182 const sock = this . socketInstance ;
181183 const cbs = this . props . globalCallbacks ;
182- getBoilingDataCredentials (
183- this . props . username ,
184- this . props . password ,
185- this . region ,
186- this . props . endpointUrl ,
187- this . props . mfa ,
188- this . props . authcontext ,
189- this . logger ,
190- )
191- . then ( creds => {
192- this . creds = creds ;
193- sock . socket = new WebSocket ( this . creds . signedWebsocketUrl ) ;
194- sock . socket ! . onclose = ( ) => {
195- if ( cbs ?. onSocketClose ) cbs . onSocketClose ( ) ;
196- } ;
197- sock . socket ! . onopen = ( ) => {
198- if ( cbs ?. onSocketOpen ) cbs . onSocketOpen ( ) ;
199- resolve ( ) ;
200- } ;
201- sock . socket ! . onerror = ( err : any ) => {
202- this . logger . error ( err ) ;
184+ this . closedPromise = new Promise < void > ( closeResolve => {
185+ getBoilingDataCredentials (
186+ this . props . username ,
187+ this . props . password ,
188+ this . region ,
189+ this . props . endpointUrl ,
190+ this . props . mfa ,
191+ this . props . authcontext ,
192+ this . logger ,
193+ )
194+ . then ( creds => {
195+ this . creds = creds ;
196+ sock . socket = new WebSocket ( this . creds . signedWebsocketUrl ) ;
197+ sock . socket ! . onclose = ( ) => {
198+ if ( cbs ?. onSocketClose ) cbs . onSocketClose ( ) ;
199+ closeResolve ( ) ;
200+ } ;
201+ sock . socket ! . onopen = ( ) => {
202+ if ( cbs ?. onSocketOpen ) cbs . onSocketOpen ( ) ;
203+ resolve ( ) ;
204+ } ;
205+ sock . socket ! . onerror = ( err : any ) => {
206+ this . logger . error ( err ) ;
207+ reject ( err ) ;
208+ } ;
209+ sock . socket ! . onmessage = ( msg : MessageEvent ) => {
210+ return this . handleSocketMessage ( msg ) ;
211+ } ;
212+ } )
213+ . catch ( err => {
214+ console . error ( err ) ;
203215 reject ( err ) ;
204- } ;
205- sock . socket ! . onmessage = ( msg : MessageEvent ) => {
206- return this . handleSocketMessage ( msg ) ;
207- } ;
208- } )
209- . catch ( err => {
210- console . error ( err ) ;
211- reject ( err ) ;
212- } ) ;
216+ } ) ;
217+ } ) ;
213218 } ) ;
214219 }
215220
0 commit comments