async def METHOD_NAME(self, message: OperationMessage) -> None:
    operation_id = message["id"]
    payload = cast("StartPayload", message["payload"])
    query = payload["query"]
    operation_name = payload.get("operationName")
    variables = payload.get("variables")
    context = await self.get_context()
    if isinstance(context, dict):
        context["connection_params"] = self.connection_params
    root_value = await self.get_root_value()
    if self.debug:
        pretty_print_graphql_operation(operation_name, query, variables)
    try:
        result_source = await self.schema.subscribe(
            query=query,
            variable_values=variables,
            operation_name=operation_name,
            context_value=context,
            root_value=root_value,
        )
    except GraphQLError as error:
        error_payload = error.formatted
        await self.send_message(GQL_ERROR, operation_id, error_payload)
        self.schema.process_errors([error])
        return
    if isinstance(result_source, GraphQLExecutionResult):
        assert result_source.errors
        error_payload = result_source.errors[0].formatted
        await self.send_message(GQL_ERROR, operation_id, error_payload)
        self.schema.process_errors(result_source.errors)
        return
    self.subscriptions[operation_id] = result_source
    result_handler = self.handle_async_results(result_source, operation_id)
    self.tasks[operation_id] = asyncio.create_task(result_handler)