pub async fn grade_user_submission(
    conn: &mut PgConnection,
    exercise_with_user_state: &mut ExerciseWithUserState,
    user_exercise_slide_submission: &StudentExerciseSlideSubmission,
    grading_policy: GradingPolicy,
    fetch_service_info: impl Fn(Url) -> BoxFuture<'static, ModelResult<ExerciseServiceInfoApi>>,
    send_grading_request: impl Fn(Url, &ExerciseTask, &ExerciseTaskSubmission) -> BoxFuture<'static, ModelResult<ExerciseTaskGradingResult>>
) -> ModelResult<StudentExerciseSlideSubmissionResult>