def METHOD_NAME(
    request: Request,
    timer: Timer,
    query_metadata: SnubaQueryMetadata,
    result: Union[QueryResult, QueryException, QueryPlanException],
) -> None:
    """
    Records a request after it has been parsed and validated, whether
    we actually ran a query or not.
    """
    extra_data: Mapping[str, Any] = {}
    if not isinstance(result, QueryPlanException):
        extra_data = result.extra
    if settings.RECORD_QUERIES:
        # Send to redis
        # We convert this to a dict before passing it to state in order to avoid a
        # circular dependency, where state would depend on the higher level
        # QueryMetadata class
        state.METHOD_NAME(query_metadata.to_dict())
        _record_timer_metrics(request, timer, query_metadata, result)
        _add_tags(timer, extra_data.get("experiments"), query_metadata)