diff --git a/src/common/lib/client/realtimechannel.ts b/src/common/lib/client/realtimechannel.ts index 6185bd017e..abf6054781 100644 --- a/src/common/lib/client/realtimechannel.ts +++ b/src/common/lib/client/realtimechannel.ts @@ -113,8 +113,13 @@ class RealtimeChannel extends Channel { this._allChannelChanges = new EventEmitter(); } - static invalidStateError(state: string): ErrorInfo { - return new ErrorInfo('Channel operation failed as channel state is ' + state, 90001, 400); + invalidStateError(): ErrorInfo { + return new ErrorInfo( + 'Channel operation failed as channel state is ' + this.state, + 90001, + 400, + this.errorReason || undefined + ); } static processListenerArgs(args: unknown[]): any[] { @@ -244,7 +249,7 @@ class RealtimeChannel extends Channel { switch (state) { case 'failed': case 'suspended': - callback(ErrorInfo.fromValues(RealtimeChannel.invalidStateError(state))); + callback(ErrorInfo.fromValues(this.invalidStateError())); break; default: { Logger.logAction(Logger.LOG_MICRO, 'RealtimeChannel.publish()', 'sending message; channel state is ' + state); @@ -425,7 +430,7 @@ class RealtimeChannel extends Channel { } if (this.state === 'failed') { - callback?.(ErrorInfo.fromValues(RealtimeChannel.invalidStateError('failed'))); + callback?.(ErrorInfo.fromValues(this.invalidStateError())); return; } diff --git a/src/common/lib/client/realtimepresence.ts b/src/common/lib/client/realtimepresence.ts index 0c93667fbc..760ea436cd 100644 --- a/src/common/lib/client/realtimepresence.ts +++ b/src/common/lib/client/realtimepresence.ts @@ -59,7 +59,7 @@ function waitAttached(channel: RealtimeChannel, callback: ErrCallback, action: ( }); break; default: - callback(ErrorInfo.fromValues(RealtimeChannel.invalidStateError(channel.state))); + callback(ErrorInfo.fromValues(channel.invalidStateError())); } } @@ -248,7 +248,7 @@ class RealtimePresence extends Presence { break; } default: - callback?.(RealtimeChannel.invalidStateError(channel.state)); + callback?.(channel.invalidStateError()); } } @@ -533,7 +533,7 @@ class RealtimePresence extends Presence { } if (channel.state === 'failed') { - callback(ErrorInfo.fromValues(RealtimeChannel.invalidStateError('failed'))); + callback(ErrorInfo.fromValues(channel.invalidStateError())); return; }