async fn grade_user_submission_task(
    conn: &mut PgConnection,
    submission: &ExerciseTaskSubmission,
    exercise: &Exercise,
    user_exercise_slide_state_id: Uuid,
    user_exercise_state: &UserExerciseState,
    fetch_service_info: impl Fn(Url) -> BoxFuture<'static, ModelResult<ExerciseServiceInfoApi>>,
    send_grading_request: impl Fn(Url, &ExerciseTask, &ExerciseTaskSubmission) -> BoxFuture<'static, ModelResult<ExerciseTaskGradingResult>>
) -> ModelResult<StudentExerciseTaskSubmissionResult>