Whisk the warm milk, yeast, and sugar together in the bowl. Cover and allow to sit for 5 minutes. The mixture should be a little frothy on top after 5 minutes.
Add the eggs, butter, vanilla, salt, and 2 cups (245g) flour. Form a dough if its sticky, add tbsp of flour. Keep kneading the dough on a lightly floured surface for 2 minutes.
Lightly grease a large bowl with oil or nonstick spray. Place the dough in the bowl, turning it to coat all sides in the oil. Cover the bowl with aluminum foil, plastic wrap, or a clean kitchen towel. Allow the dough to rise in a relatively warm environment for 1.5-2 hours or until double in size.
When the dough is ready, punch it down to release the air. Remove dough from the bowl and turn it out onto a lightly floured surface. If needed, punch down again to release any more air bubbles. Using a rolling pin, roll the dough out until it is 1/2 inch thick. Using a 3-3.5 inch doughnut cutter, cut into 12 doughnuts. If you can’t quite fit 12, re-roll the scraps and cut more.
Line 1 or 2 baking sheets with parchment paper or silicone baking mats. Place doughnuts and doughnut holes on each. Loosely cover and allow to rest as you heat the oil. They will rise a bit as they rest. Place a cooling rack over another baking sheet.
Heat oil in a large heavy-bootom pot over medium heat. Add 2-3 doughnuts at a time and cook for 1 minute on each side. Carefully remove with a metal spatula or metal slotted spoon.
Whisk all of the glaze ingredients together. Dip each warm doughnut (don’t wait for them to cool!) into the glaze, making sure to coat both sides. Place back onto prepared rack as excess glaze drips down. After about 20 minutes, the glaze will set + harden.
Doughnuts are best enjoyed the same day. You can store in an airtight container at room temperature or in the refrigerator for 1-2 extra days.