@@ -85,27 +85,35 @@ export class UpdatesListener {
8585 private readonly intervalId : NodeJS . Timer
8686 private readonly params ?: Partial < CSGOFetchParams >
8787 private readonly callback : ( post : Post ) => any
88+ private readonly callbackError ?: ( e : unknown ) => any
8889 private lastPostTime : number
89- constructor ( callback : ( post : Post ) => any , interval : number = 600000 , params ?: Partial < CSGOFetchParams > , lastPostTime ?: number ) {
90+ constructor ( callback : ( post : Post ) => any , interval : number = 600000 , params ?: Partial < CSGOFetchParams > , lastPostTime ?: number , callbackError ?: ( e : unknown ) => any ) {
9091 this . lastPostTime = lastPostTime ?? Date . now ( )
9192 this . params = params
9293 this . callback = callback
94+ this . callbackError = callbackError
9395 // eslint-disable-next-line @typescript-eslint/no-misused-promises
9496 this . intervalId = setInterval ( this . fetchPosts . bind ( this ) , interval )
9597 void this . fetchPosts ( )
9698 }
9799
98100 async fetchPosts ( ) : Promise < void > {
99- const posts = await getPosts ( undefined , this . params )
100- posts . reverse ( ) . forEach ( post => {
101- if ( post . date . getTime ( ) <= this . lastPostTime ) {
102- return
103- }
104- try {
101+ try {
102+ const posts = await getPosts ( undefined , this . params )
103+ posts . reverse ( ) . forEach ( post => {
104+ if ( post . date . getTime ( ) <= this . lastPostTime ) {
105+ return
106+ }
105107 this . callback ( post )
106- } catch ( e ) { }
107- this . lastPostTime = post . date . getTime ( )
108- } )
108+ this . lastPostTime = post . date . getTime ( )
109+ } )
110+ } catch ( e ) {
111+ if ( this . callbackError ) {
112+ try {
113+ this . callbackError ( e )
114+ } catch ( e ) { }
115+ }
116+ }
109117 }
110118
111119 stopListening ( ) : void {
0 commit comments