the ResolveFieldFinishFunc (as registered by the ResolveFieldDidStart method on the extension) is called before the function value is executed. If I'm reading the source correctly below for resolveField, resolveFieldFinishFn is called immediately after the resolveFn, but before completeValueCatchingError actually evaluates the resolver value if it is a function.
Is there a reason for this? Since the Extension interface was created in part to support tracing use cases as per https://github.com/graphql-go/graphql/pull/448, that we would want to only run the ResolveFieldFinishFunc after the resolver value is fully evaluated.
When using an extension with a schema which has a resolver that returns a function value, e.g.
the
ResolveFieldFinishFunc
(as registered by theResolveFieldDidStart
method on the extension) is called before the function value is executed. If I'm reading the source correctly below forresolveField
,resolveFieldFinishFn
is called immediately after theresolveFn
, but beforecompleteValueCatchingError
actually evaluates the resolver value if it is a function.https://github.com/graphql-go/graphql/blob/bed865f0458679ed5309c2cc4bfa82a2f84d8b5f/executor.go#L657-L663
Is there a reason for this? Since the
Extension
interface was created in part to support tracing use cases as per https://github.com/graphql-go/graphql/pull/448, that we would want to only run theResolveFieldFinishFunc
after the resolver value is fully evaluated.