In a stand mixer bowl, whisk flour, sugar, yeast, and salt.
Add eggs and warm milk, then mix on low until combined.
Gradually add softened butter (1 tbsp at a time) while mixing.
Knead on medium speed for 8-10 minutes until smooth and elastic (dough will be sticky).
Cover the bowl with plastic wrap and let rise in a warm place for 1.5-2 hours or until doubled in size.
Punch down the dough and transfer to a floured surface.
Divide into 8 equal pieces, roll into balls, and place in a greased loaf pan.
Cover and let rise again for 1 hour until puffy.
Preheat oven to 350°F (175°C).
Whisk egg yolk + water and brush over the dough.
Bake for 25-30 minutes until golden brown.
Cool in the pan for 10 minutes, then transfer to a wire rack.