diff --git a/packages/core/src/network/session-connection.ts b/packages/core/src/network/session-connection.ts index e097eb86..b291d60e 100644 --- a/packages/core/src/network/session-connection.ts +++ b/packages/core/src/network/session-connection.ts @@ -138,6 +138,15 @@ export class SessionConnection extends PersistentConnection { clearTimeout(timeout) }) + // resend pending state_req-s + for (const msgId of this._session.pendingMessages.keys()) { + const pending = this._session.pendingMessages.get(msgId)! + + if (pending._ === 'state') { + this._onMessageFailed(msgId, 'connection loss', true) + } + } + this.emit('disconnect') this.reset() @@ -1176,6 +1185,8 @@ export class SessionConnection extends PersistentConnection { return } + this._session.pendingMessages.delete(msgId) + switch (status & 7) { case 1: case 2: