Heat the milk to 110 degrees F and stir in yeast and sugar. If using active dry yeast, allow to sit for 15 minutes. If using instant yeast, simply move on to the next step.
Mix the eggs into the milk yeast mixture.
Combine flour and salt together in the bowl of a stand mixer fitted with a dough hook. 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 one piece of butter at a time, allowing it to fully incorporate before adding the next. Once all of the butter is incorporated, turn the mixer up to medium-high speed and mix for 6-8 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 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 it rise in a warm environment for about an hour or until doubled in size.
On a lightly floured surface, roll the dough out to a rough rectangle about ¼'' in thickness. Spread the pesto evenly all over the dough, leaving a border around the edge. Roll the dough up from the long side. Cut the dough down the middle and place one piece over the other, keeping the layers facing upwards (see pictures). Shape dough into an S-shaped swirl and transfer to a parchment paper lined baking sheet. Cover the dough loosely and allow to rise in a warm environment for 30 minutes.
While the dough proofs, preheat the oven to 350 degrees. Towards the end of the proof time, brush the dough with an egg wash.
Bake bread for 20 minutes until golden brown. Allow to cool completely before cutting.