Combine the milk and bread flour in a medium saucepan. Place over medium heat and cook, stirring continuously, until the mixture thickens into a paste. Remove from heat and transfer to the bowl of a stand mixer.
Add the cold milk and mix to combine, checking with your finger that it is not hotter than lukewarm. Add the sugar, yeast, milk powder, salt, egg, and flour. Transfer to the mixer and fit with the dough hook.
Mix the dough on medium speed until it is smooth and elastic and clearing the sides of the bowl, about 12-15 minutes. If after that time it really isn’t coming together, add flour a teaspoon at a time just until the dough just comes together.
Add the butter and mix for a further 5 minutes until incorporated. The dough should be smooth and elastic, and pass the windowpane test.
Turn the dough out onto a surface and flour very lightly if needed to bring into a tight ball with a bench scraper. Transfer to a greased bowl and cover the bowl with plastic wrap.
Place the dough in a warm spot and rise until doubled in size, approximately 1 ½ hours.
Turn the dough out onto a lightly floured surface. If you are using rings for your buns, grease them lightly.
Divide the dough into 9 equal portions, each weighing about 90g. Working with one piece of dough at a time, flatten out the piece of dough, then tuck up into a ball, then turn the ball seam side down and roll into a tight ball.
Leave the buns to rest for 10 minutes, then give them a quick roll to tighten them back up. Place them in the prepared rings or spaced apart on the baking sheets.
Cover the buns either with a lid, or some lightly greased plastic wrap. Leave the buns to rise again for about 1 ½ hours.
When there is about 20 minutes to go in the rise, preheat the oven to 360°f / 185°c. Brush the buns with egg wash and bake in the oven for 15-18 minutes, until they are a deep golden brown.
Leave to cool on the pans for 10-15 minutes then transfer to a wire rack and allow to cool completely.
