In a small bowl, dissolve the yeast in the warm water and set aside for 5 minutes. In a separate bowl, beat together the milk, sugar, and egg. In a large mixing bowl or mixer with a dough hook attachment, combine the flour and salt. Add in the yeast and milk mixtures.
If using a mixer, knead with a dough hook on low for a minute, and then high for 2 minutes. Then add the softened butter and knead on a medium high setting for 13 minutes.
If kneading by hand, knead for about 8 minutes and add the butter. Then knead for another 25-30 minutes (you may want to switch on the TV or something). Basically, you need to knead and develop the gluten until you can stretch a piece of dough really thin without it breaking.
Cover the bowl with a damp towel and allow the dough to rise for 50 minutes. After it’s proofed, punch out all the air and divide the dough into 12 equal pieces. Let it rest for 15 minutes while you make the filling—just mix all the filling ingredients together in a bowl.
To shape the buns, simply roll each piece out into a long rectangle, about 10 inches long. Spread a layer of filling onto each, and roll it up lengthwise like a cigar. Cut the cigar in half lengthwise, leaving it attached at one end, so it kind of looks like a long pair of pants. Split them pants apart (we tried really hard to somehow not make that sound inappropriate and obviously failed), so you kind of just get this really long rope. Curl up the rope like a snail to make the buns, with all the little lines of dough and filling facing up.
Place onto a baking sheet lined with parchment paper, cover with a damp towel, and let rise again for another hour. Preheat the oven to 350 degrees and brush the buns with egg wash. Bake 20-25 minutes, or until golden brown.