In a large mixing bowl, combine 1 cup of all-purpose flour,1 cup warm milk, 2 tsp sugar, and yeast. Stir everything together until smooth. Cover it with plastic and let it stand at room temperature for 30 minutes, until bubbly.
To the same bowl, add 2 lightly beaten eggs, 1/2 cup sugar, cocoa powder, salt, 1/2 cup finely chopped nuts and 1/2 cup of flour. Stir everything using a wooden spoon until all the ingredients and incorporated and the mixture is smooth.
Add the softened butter bit by bit, stirring well after each addition. Add just enough remaining flour gradually until the dough gathers in the center of the bowl. You are looking for a soft, shaggy dough that is not dry.
Turn the dough into a lightly floured board. Knead it until the dough is smooth and elastic. You may not need the entire flour. I always have about 1/2 to 1/3 cup of flour left. Shape the dough into a ball, place it in a bowl and cover with a clean kitchen towel. Let it rise for an hour until doubled in size.
Punch the dough down and divide it into 3 equal portions. Let them rest for 10 minutes. After resting, roll each portion into a rope that is 20 inches long. Braid them together starting from one end down the other end. Join the ends together to form a circle. To seal the dough, make the end overlap by putting one end over the other. Pinch them together to close the circle.
Transfer the dough into a large greased baking sheet. Place a ball of foil in the center of the circle to retain the shape of the dough as it rises. Cover the dough with a clean kitchen towel and let it rise for 45-60 minutes, until puffy and doubled in size.
Preheat oven to 375 F. To make the egg wash, beat the egg with 1 tbsp of milk. Brush the dough with the egg wash using a pastry brush. Bake the bread for 20-25 minutes. The bread will be hollow once you tap it. Drizzle the chocolate glaze over the bread and sprinkle some walnuts over top.