Whisk together whole milk and flour in a saucepan until smooth.
Cook over medium heat, whisking constantly, until the mixture thickens to a pudding-like consistency, about 5–7 minutes.
Remove from heat and cool completely.
Frosting Preparation
Beat softened butter and sugar together until light and fluffy, about 3–5 minutes.
Add the cooled milk-flour mixture to the butter and sugar, then beat until fluffy and smooth, about 5–7 minutes.
Add vanilla extract (or almond extract/citrus zest) and mix until combined.
Notes
For best results, ensure butter is softened, don’t rush the cooking, and allow the milk-flour mixture to cool completely. Leftover frosting can be stored for up to five days in the refrigerator, or frozen for up to three months.