Melt butter in a pot, then add milk and heat until lukewarm.
Remove the liquid from the heat and whisk the yeast in.
In another bowl, mix remaining dry ingredients except for 1 cup of flour (2 cups for a double recipe).
Add wet to dry, a little at a time. Make sure to stir out any lumps that form before adding more liquid.
Add as much of the remaining flour as necessary, until the firm but still a little sticky.
Cover the dough and let it rise for 30 minutes.
Roll the dough into a log and divide it into 12 pieces (24 for a double recipe). Roll each piece into a round bun - getting rid of any cracks - and flatten into thick "mini pizzas." Cover the buns and let them rise for 15 minutes.
Make a divot in the center of the bun for the custard. I like to use a 10 tbsp measuring glass (diameter of 2 1/8 inch), but any narrow glass with a similar diameter would do the trick. Tip: Wet the outside of the glass down between making each divot, as this prevents the dough from sticking to it.
Put as much custard as you want in each divot. I typically put enough to almost fill the divot, as the custard will spill out during the baking if you use too much.
Whip the egg (saving some egg white for the icing) and brush onto the buns.
Bake the buns for 9 minutes at 437 °F (225 °C) and let them cool down on a cooling rack.
Apply the icing, then dip the iced bun in the shredded coconut to cover the top of the bun.
The preparation time is based on a double recipe and includes icing the buns.