@@ -1020,14 +1020,30 @@ export class GraphQLModule<
10201020 try {
10211021 moduleContext = await this . context ( info . session , true ) ;
10221022 } catch ( e ) {
1023+ moduleContext . injector . callHookWithArgsAsync ( {
1024+ hook : 'onError' ,
1025+ args : [ e ] ,
1026+ instantiate : true
1027+ } ) ;
10231028 const logger = this . selfLogger ;
10241029 if ( 'clientError' in logger ) {
10251030 logger . clientError ( e ) ;
10261031 }
10271032 throw e ;
10281033 }
10291034 info . schema = this . schema ;
1030- return resolver . call ( typeResolvers , root , moduleContext , info ) ;
1035+ let result ;
1036+ try {
1037+ result = await resolver . call ( typeResolvers , root , moduleContext , info ) ;
1038+ } catch ( e ) {
1039+ moduleContext . injector . callHookWithArgsAsync ( {
1040+ hook : 'onError' ,
1041+ args : [ e ] ,
1042+ instantiate : true
1043+ } ) ;
1044+ throw e ;
1045+ }
1046+ return result ;
10311047 } ;
10321048 } else {
10331049 typeResolvers [ prop ] = async ( root : any , args : any , appContext : any , info : any ) => {
@@ -1041,14 +1057,30 @@ export class GraphQLModule<
10411057 try {
10421058 moduleContext = await this . context ( info . session , true ) ;
10431059 } catch ( e ) {
1060+ moduleContext . injector . callHookWithArgsAsync ( {
1061+ hook : 'onError' ,
1062+ args : [ e ] ,
1063+ instantiate : true
1064+ } ) ;
10441065 const logger = this . selfLogger ;
10451066 if ( 'clientError' in logger ) {
10461067 logger . clientError ( e ) ;
10471068 }
10481069 throw e ;
10491070 }
10501071 info . schema = this . schema ;
1051- return resolver . call ( typeResolvers [ prop ] , root , args , moduleContext , info ) ;
1072+ let result ;
1073+ try {
1074+ result = await resolver . call ( typeResolvers [ prop ] , root , args , moduleContext , info ) ;
1075+ } catch ( e ) {
1076+ moduleContext . injector . callHookWithArgsAsync ( {
1077+ hook : 'onError' ,
1078+ args : [ e ] ,
1079+ instantiate : true
1080+ } ) ;
1081+ throw e ;
1082+ }
1083+ return result ;
10521084 } ;
10531085 }
10541086 } else if ( resolver && typeof resolver === 'object' && resolver [ 'subscribe' ] ) {
@@ -1071,7 +1103,18 @@ export class GraphQLModule<
10711103 throw e ;
10721104 }
10731105 info . schema = this . schema ;
1074- return subscriber . call ( typeResolvers [ prop ] , root , args , moduleContext , info ) ;
1106+ let result ;
1107+ try {
1108+ result = await subscriber . call ( typeResolvers [ prop ] , root , args , moduleContext , info ) ;
1109+ } catch ( e ) {
1110+ moduleContext . injector . callHookWithArgsAsync ( {
1111+ hook : 'onError' ,
1112+ args : [ e ] ,
1113+ instantiate : true
1114+ } ) ;
1115+ throw e ;
1116+ }
1117+ return result ;
10751118 } ;
10761119 }
10771120 }
0 commit comments