In a glass measuring cup, heat the milk to 110 degrees F and stir in the sugar and yeast. Allow to sit for 15 minutes for the yeast to activate.
Mix the eggs into the milk yeast mixture.
In the bowl of a stand mixer fitted with a dough hook, mix the flour and salt together.
Pour the wet ingredients into the flour and mix on low-medium speed for about 3 minutes, or until it forms a ball around the hook.
Add in a few pieces of butter at a time, allowing them to fully incorporate before adding more.
Once all of the butter is incorporated, turn the mixer up to medium-high speed and mix for 8-12 minutes. To check if the dough is ready, tear off a small piece and carefully spread it out to see if you can see the light through it without it tearing. If it tears, mix for another minute or two and check again.
Once the dough is ready, transfer it to a lightly greased bowl, cover, and allow to proof overnight in the fridge. Alternatively, you can let the dough rise in a warm place for about 1 hour or until doubled in size.
When ready to bake the bread, preheat the oven to 350 degrees F and line a baking sheet with parchment paper.
On a lightly floured surface, roll the dough out to rough rectangle about ¼" in thickness. Spread the pesto on in an even layer, then roll it up from the long side. Cut the log down the middle, turn the inside layers upwards, and cross them over each other into a braid. Curl the ends into the middle, creating an S-shape.
Transfer the shaped bread to the prepared baking sheet, then cover and allow to proof for about 20-30 minutes until the dough springs back slowly when pressed with a finger.
Brush the dough with an egg wash, then bake for 30-35 minutes until golden brown and no longer doughy in the center. Tent the bread with aluminum foil around the 20 minute mark to prevent it from browning too much. Allow the bread to cool completely before cutting.