@@ -123,30 +123,27 @@ export function isSafeToRetrySendError(err: unknown): boolean {
123123 return false ;
124124}
125125
126- /** Returns true for HTTP 5xx server errors (error may have been processed). */
127- export function isTelegramServerError ( err : unknown ) : boolean {
126+ function hasTelegramErrorCode ( err : unknown , matches : ( code : number ) => boolean ) : boolean {
128127 for ( const candidate of collectTelegramErrorCandidates ( err ) ) {
129- if ( candidate && typeof candidate === "object" && "error_code" in candidate ) {
130- const code = ( candidate as { error_code : unknown } ) . error_code ;
131- if ( typeof code === "number" && code >= 500 ) {
132- return true ;
133- }
128+ if ( ! candidate || typeof candidate !== "object" || ! ( "error_code" in candidate ) ) {
129+ continue ;
130+ }
131+ const code = ( candidate as { error_code : unknown } ) . error_code ;
132+ if ( typeof code === "number" && matches ( code ) ) {
133+ return true ;
134134 }
135135 }
136136 return false ;
137137}
138138
139+ /** Returns true for HTTP 5xx server errors (error may have been processed). */
140+ export function isTelegramServerError ( err : unknown ) : boolean {
141+ return hasTelegramErrorCode ( err , ( code ) => code >= 500 ) ;
142+ }
143+
139144/** Returns true for HTTP 4xx client errors (Telegram explicitly rejected, not applied). */
140145export function isTelegramClientRejection ( err : unknown ) : boolean {
141- for ( const candidate of collectTelegramErrorCandidates ( err ) ) {
142- if ( candidate && typeof candidate === "object" && "error_code" in candidate ) {
143- const code = ( candidate as { error_code : unknown } ) . error_code ;
144- if ( typeof code === "number" && code >= 400 && code < 500 ) {
145- return true ;
146- }
147- }
148- }
149- return false ;
146+ return hasTelegramErrorCode ( err , ( code ) => code >= 400 && code < 500 ) ;
150147}
151148
152149export function isRecoverableTelegramNetworkError (
0 commit comments