I don't follow. Yes, we should make the feature work without javascript. But what does that have to do with whether the subscription name check is done in the controller or in the action function? The controller method should call the action function.

Point is "logic" (such as "two subscriptions belonging to the same user cannot have the same name") belongs in the logic package not in the controller, the controller is just a thin layer between the logic package and the frontend.