@@ -337,11 +337,22 @@ ExecuteSelectionSet(selectionSet, objectType, objectValue, variableValues):
337
337
Note: {resultMap} is ordered by which fields appear first in the query. This
338
338
is explained in greater detail in the Field Collection section below.
339
339
340
+ ** Errors and Non-Null Fields**
341
+
342
+ If during {ExecuteSelectionSet()} a field with a non-null {fieldType} throws a
343
+ field error then that error must propagate to this entire selection set, either
344
+ resolving to {null} if allowed or further propagated to a parent field.
345
+
346
+ If this occurs, any sibling fields which have not yet executed or have not yet
347
+ yielded a value may be cancelled to avoid unnecessary work.
348
+
349
+ See the [ Errors and Non-Nullability] ( #sec-Errors-and-Non-Nullability ) section
350
+ of Field Execution for more about this behavior.
340
351
341
352
### Normal and Serial Execution
342
353
343
354
Normally the executor can execute the entries in a grouped field set in whatever
344
- order it chooses (often in parallel). Because the resolution of fields other
355
+ order it chooses (normally in parallel). Because the resolution of fields other
345
356
than top-level mutation fields must always be side effect-free and idempotent,
346
357
the execution order must not affect the result, and hence the server has the
347
358
freedom to execute the field entries in whatever order it deems optimal.
@@ -364,7 +375,7 @@ chose (however of course `birthday` must be resolved before `month`, and
364
375
` address ` before ` street ` ).
365
376
366
377
When executing a mutation, the selections in the top most selection set will be
367
- executed in serial order.
378
+ executed in serial order, starting with the first appearing field textually .
368
379
369
380
When executing a grouped field set serially, the executor must consider each entry
370
381
from the grouped field set in the order provided in the grouped field set. It must
0 commit comments