     mutationStrategy: MutationFieldExecutionStrategy = SerialFieldExecutionStrategy(),
     subscriptionStrategy: SubscriptionFieldExecutionStrategy = SerialFieldExecutionStrategy(),
     instrumentation: Instrumentation = NoOpInstrumentation,
+    validationRules: [(ValidationContext) -> Visitor] = [],
     schema: GraphQLSchema,
     request: String,
     rootValue: Any = (),

    mutationStrategy: MutationFieldExecutionStrategy = SerialFieldExecutionStrategy(),
    subscriptionStrategy: SubscriptionFieldExecutionStrategy = SerialFieldExecutionStrategy(),
    instrumentation: Instrumentation = NoOpInstrumentation,
    schema: GraphQLSchema,
    request: String,
    rootValue: Any = (),


    let source = Source(body: request, name: "GraphQL Subscription request")
    let documentAST = try parse(instrumentation: instrumentation, source: source)
    let validationErrors = validate(instrumentation: instrumentation, schema: schema, ast: documentAST, rules: validationRules)

    guard validationErrors.isEmpty else {
        return eventLoopGroup.next().makeSucceededFuture(SubscriptionResult(errors: validationErrors))
