Thanks to @mjwills and @Ryan in the comments for helping me see what I needed to do, but the issue was indeed that I was missing an async/await call in my logic:
await HelperService.ProcessApplication(...)
public static async Task ProcessApplication(Application application, Func<string, List<string>, Task> response)
await response("APPROVED", ["Your application has been approved."]);
await response("DENIED", reasons);
Made the above changes to my code and was able to finally break through. To anyone else that comes across this with a similar issue, double check all of your code to make sure everything is using async/await patterns if you are using them. Hope people can learn from this mistake!