@@ -80,7 +80,7 @@ export class RecommendationService {
8080 nextToken : request . partialResultToken ,
8181 } ,
8282 } )
83- let result : InlineCompletionListWithReferences = await languageClient . sendRequest (
83+ const result : InlineCompletionListWithReferences = await languageClient . sendRequest (
8484 inlineCompletionWithReferencesRequestType . method ,
8585 request ,
8686 token
@@ -120,18 +120,10 @@ export class RecommendationService {
120120 getLogger ( ) . info (
121121 'Suggestion type is COMPLETIONS. Start fetching for more items if partialResultToken exists.'
122122 )
123- try {
124- while ( result . partialResultToken ) {
125- const paginatedRequest = { ...request , partialResultToken : result . partialResultToken }
126- result = await languageClient . sendRequest (
127- inlineCompletionWithReferencesRequestType . method ,
128- paginatedRequest ,
129- token
130- )
131- this . sessionManager . updateSessionSuggestions ( result . items )
132- }
133- } catch ( error ) {
134- languageClient . warn ( `Error when getting suggestions: ${ error } ` )
123+ if ( result . partialResultToken ) {
124+ this . processRemainingRequests ( languageClient , request , result , token ) . catch ( ( error ) => {
125+ languageClient . warn ( `Error when getting suggestions: ${ error } ` )
126+ } )
135127 }
136128 } else {
137129 // Skip fetching for more items if the suggesion is EDITS. If it is EDITS suggestion, only fetching for more
@@ -167,4 +159,31 @@ export class RecommendationService {
167159 }
168160 }
169161 }
162+
163+ private async processRemainingRequests (
164+ languageClient : LanguageClient ,
165+ initialRequest : InlineCompletionWithReferencesParams ,
166+ firstResult : InlineCompletionListWithReferences ,
167+ token : CancellationToken
168+ ) : Promise < void > {
169+ let nextToken = firstResult . partialResultToken
170+ while ( nextToken ) {
171+ const request = { ...initialRequest , partialResultToken : nextToken }
172+
173+ const result : InlineCompletionListWithReferences = await languageClient . sendRequest (
174+ inlineCompletionWithReferencesRequestType . method ,
175+ request ,
176+ token
177+ )
178+
179+ this . sessionManager . updateSessionSuggestions ( result . items )
180+ nextToken = result . partialResultToken
181+ }
182+
183+ this . sessionManager . closeSession ( )
184+
185+ // All pagination requests completed
186+ TelemetryHelper . instance . setAllPaginationEndTime ( )
187+ TelemetryHelper . instance . tryRecordClientComponentLatency ( )
188+ }
170189}
0 commit comments