File tree Expand file tree Collapse file tree 1 file changed +10
-7
lines changed
components/server/src/api Expand file tree Collapse file tree 1 file changed +10
-7
lines changed Original file line number Diff line number Diff line change @@ -255,22 +255,25 @@ export class API {
255
255
} ) ;
256
256
}
257
257
258
- let subjectId : SubjectId | undefined = undefined ;
258
+ // Because we can't await before returning that generator, we await inside the generator, and create child contexts with that SubjectId
259
259
return wrapAsyncGenerator (
260
260
( async function * ( ) {
261
261
try {
262
- subjectId = await auth ( ) ;
263
-
264
- const generator = await apply < AsyncGenerator < any > > ( ) ;
265
- for await ( const item of generator ) {
266
- yield item ;
262
+ const subjectId = await auth ( ) ;
263
+ const generator = await runWithSubjectId ( subjectId , ( ) => apply < AsyncGenerator < any > > ( ) ) ;
264
+ while ( true ) {
265
+ const { value, done } = await runWithSubjectId ( subjectId , ( ) => generator . next ( ) ) ;
266
+ if ( done ) {
267
+ break ;
268
+ }
269
+ yield value ;
267
270
}
268
271
done ( ) ;
269
272
} catch ( e ) {
270
273
handleError ( e ) ;
271
274
}
272
275
} ) ( ) ,
273
- ( f ) => runWithSubjectId ( subjectId , f ) ,
276
+ ( f ) => withRequestContext ( f ) ,
274
277
) ;
275
278
} ;
276
279
} ,
You can’t perform that action at this time.
0 commit comments