@@ -5,6 +5,10 @@ import { metric } from '../text-formatters.js'
5
5
import { description } from './youtrack-helper.js'
6
6
import YoutrackBase from './youtrack-base.js'
7
7
8
+ function sleep ( ms ) {
9
+ return new Promise ( resolve => setTimeout ( resolve , ms ) )
10
+ }
11
+
8
12
const schema = Joi . object ( {
9
13
count : Joi . number ( ) . required ( ) ,
10
14
$type : Joi . equal ( 'IssueCountResponse' ) ,
@@ -71,18 +75,25 @@ export default class YoutrackIssues extends YoutrackBase {
71
75
} )
72
76
}
73
77
74
- async handle ( { project } , { youtrack_url : baseUrl , query } ) {
75
- const data = await this . fetch ( {
76
- baseUrl,
77
- query : `project: ${ project } ${ query } ` ,
78
- } )
79
-
80
- if ( data . count === - 1 ) {
81
- throw new InvalidResponse ( {
82
- prettyMessage : 'processing' ,
83
- cacheSeconds : 10 ,
78
+ async handle ( { project } , { youtrack_url : baseUrl , query = '' } ) {
79
+ for ( let i = 0 ; i < 6 ; i ++ ) {
80
+ // 6 trials
81
+ const data = await this . fetch ( {
82
+ baseUrl,
83
+ query : `project: ${ project } ${ query } ` ,
84
84
} )
85
+
86
+ if ( data . count === - 1 ) {
87
+ await sleep ( 500 )
88
+ continue
89
+ }
90
+
91
+ return this . constructor . render ( { count : data . count } )
85
92
}
86
- return this . constructor . render ( { count : data . count } )
93
+
94
+ throw new InvalidResponse ( {
95
+ prettyMessage : 'invalid' ,
96
+ cacheSeconds : 10 ,
97
+ } )
87
98
}
88
99
}
0 commit comments