class GraphQL::Execution::Multiplex

@api private
@see {Schema#multiplex} for public API
one of these errors in one query will not affect the other queries.
Validation errors and {GraphQL::ExecutionError}s are handled in isolation:
If one query raises an application error, all queries will be in undefined states.
- Multiplex instrumentation teardown
- Query instrumentation teardown
- Finish each query (eg, get errors)
- Resolve lazy values, breadth-first across all queries
- Begin each query
- Analyze the multiplex + each query
- Query instrumentation setup
- Multiplex instrumentation setup
The flow is:
They can share a batching context and reduce redundant database hits.
Execute multiple queries under the same multiplex “umbrella”.

def initialize(schema:, queries:, context:, max_complexity:)

def initialize(schema:, queries:, context:, max_complexity:)
  @schema = schema
  @queries = queries
  @queries.each { |q| q.multiplex = self }
  @context = context
  @current_trace = @context[:trace] || schema.new_trace(multiplex: self)
  @dataloader = @context[:dataloader] ||= @schema.dataloader_class.new
  @tracers = schema.tracers + (context[:tracers] || [])
  # Support `context: {backtrace: true}`
  if context[:backtrace] && !@tracers.include?(GraphQL::Backtrace::Tracer)
    @tracers << GraphQL::Backtrace::Tracer
  end
  @max_complexity = max_complexity
end