@@ -30,11 +30,16 @@ func (r *Request) Subscribe(ctx context.Context, s *resolvable.Schema, op *types
3030 }
3131
3232 for _ , directive := range f .field .Directives {
33- if executor , ok := r .DirectiveExecutors [directive .Name .Name ]; ok {
33+ if dirFunc , ok := r .DirectiveFuncs [directive .Name .Name ]; ok {
3434 var dirErr error
35- ctx , dirErr = executor . Exec (ctx , directive , f .field .PackedArgs )
35+ ctx , dirErr = dirFunc (ctx , directive , f .field .PackedArgs )
3636 if dirErr != nil {
37- return sendAndReturnClosed (& Response {Errors : []* errors.QueryError {errors .Errorf ("%s" , dirErr )}})
37+ err := errors .Errorf ("%s" , dirErr )
38+ err .ResolverError = dirErr
39+ if ex , ok := dirErr .(extensionser ); ok {
40+ err .Extensions = ex .Extensions ()
41+ }
42+ return sendAndReturnClosed (& Response {Errors : []* errors.QueryError {err }})
3843 }
3944 }
4045 }
@@ -65,6 +70,9 @@ func (r *Request) Subscribe(ctx context.Context, s *resolvable.Schema, op *types
6570 resolverErr := callOut [1 ].Interface ().(error )
6671 err = errors .Errorf ("%s" , resolverErr )
6772 err .ResolverError = resolverErr
73+ if ex , ok := callOut [1 ].Interface ().(extensionser ); ok {
74+ err .Extensions = ex .Extensions ()
75+ }
6876 }
6977
7078 if err != nil {
@@ -117,10 +125,10 @@ func (r *Request) Subscribe(ctx context.Context, s *resolvable.Schema, op *types
117125 Vars : r .Request .Vars ,
118126 Schema : r .Request .Schema ,
119127 },
120- Limiter : r .Limiter ,
121- Tracer : r .Tracer ,
122- Logger : r .Logger ,
123- DirectiveExecutors : r .DirectiveExecutors ,
128+ Limiter : r .Limiter ,
129+ Tracer : r .Tracer ,
130+ Logger : r .Logger ,
131+ DirectiveFuncs : r .DirectiveFuncs ,
124132 }
125133 var out bytes.Buffer
126134 func () {
0 commit comments