To make the tangzhong, place the flour in a small saucepan and gradually whisk in the water. Place over a medium heat and cook, whisking constantly until it has thickened to a wallpaper paste-like consistency. Remove from the heat, scrape into a bowl and cover with clingfilm directly on the surface, set aside to cool.
Place the flour, yeast, salt, sugar and milk powder in the bowl of a stand mixer fitted with the dough hook, lightly stir together and make a well in the centre. Add the egg (or aquafaba/milk), milk and tangzhong to the well and mix on a low speed until it comes together into a dough.
Add the butter and mix on a high speed until the dough is very stretchy and comes away from the sides of the bowl, this can take about 15 minutes, even in a stand mixer.
Transfer the dough to a lightly greased bowl, cover with clingfilm and either place somewhere warm to rise until doubled in size, about 1-2 hours, or in the fridge overnight.
Line a baking sheet with baking parchment. Divide the risen dough into 8 equal pieces and shape each piece into a ball on a lightly floured surface. Spread the balls out well spaced apart on the baking sheet and loosely cover with oiled clingfilm. Leave to rise for about 1 hour until puffy.
Meanwhile, preheat the oven to 200C/400F/gas mark 6. Brush the risen buns with the beaten egg (or non-dairy milk) and sprinkle with sesame seeds. Bake for about 20 minutes until deep golden, the internal temperature should reach 90°C.
Transfer the buns to a wire rack to cool before serving, store in an airtight container.