Place yeast in a bowl. Add sugar and stir until it liquefies. Add milk and set aside to cool completely.
Combine flour and salt into a large bowl. Add butter and using a fork combine until big crumbles form.
Add the yeast/milk mixture and gently combine until the dough just comes together. The butter needs to remain in pea-sized pieces. Wrap it with plastic, knead slowly to form a square and freeze for 30 minutes or refrigerate for a couple of hours.
Dust with flour your work surface and your rolling pin and start rolling the dough into a rectangular roughly two to three times as long as it is wide. The dough it pretty hard to work with at the beginning but will come together while rolling and folding.
Fold the short sides of the dough into the middle. Rotate the dough by a quarter turn. Roll out slightly to lengthen. Fold the short ends towards the middle.
Flip the dough over so the seams are underneath. Repeat the rolling and folding process steps 4-5, three more times, giving the dough a total of four times of rolling and folding.
Wrap the dough in plastic wrap and refrigerate for a couple of hours or better overnight.
On a lightly floured surface roll the dough into a rectangular of 16 inches (40cm) X 10 in (25 cm). Cut the dough into triangles, it will make about 8 triangles of 12 in (30 cm) long and 3 in (8 cm) at base.
Score a small slit in the centre of each triangle base, gently stretch the corners and tip, then roll the croissant starting from the wide up to the top giving them the croissant shape.
Place the croissants with tip side down onto a prepared baking sheet lined with parchment paper. Cover with plastic wrap and let rise for 2-3 hours at room temperature.
Preheat the oven to 450 F (230C). Brush the croissants with egg wash.
Bake for 8 minutes than reduce the oven to 375 F (190C) and bake for another 10-15 minutes until deep golden brown.