Types are registered at config-time but can be extended at runtime in order to use runtime injected services. If you register a type and mark it as "array" (either as an "auto" query parameter, or explicitly as array: true), the type is wrapped as an array type at config time. This binds the type's operation to the fn defined at config time.
If you then try to extend the type at runtime, the array wrapped type is still bound to the type's config-time function definition.
See #1572