Cut the butter in three (1 tbsp) slices and place in the bowl of an electric stand mixer fitted with the dough hook attachment. Add the flour, sugar, yeast and salt. Turn the mixer on low speed for one minute to combine the ingredients. With the mixer running, slowly pour in the milk. Once all the milk is added, turn the mixer to medium-high speed and knead the dough for five minutes, or until the dough starts to pull away from the sides and if you press it with your finger, it will bounce back. You can also knead by hand for five minutes.
Form the dough into a ball and cover with plastic wrap and place in the refrigerator for one hour.
Slice the cold butter in thirds and place it onto a sheet of parchment paper. Place another piece of parchment on top of the butter, and beat it with a rolling pin. Use the rolling pin to roll the butter to a seven inch square that is about ½ inch thick. Transfer the butter to the fridge for 30 minutes.
Take the dough out of the refrigerator and lightly flour the counter. Begin flattening out the dough with your hands. You are rolling it into a square so shaping with your hands helps. Use a rolling pin to roll it to a 10 inch square. Place the butter layer on top of the dough and fold the sides of the dough over the butter, so it is enclosed completely.
Roll the dough to seal the seams, making sure to lengthen the dough, not widen it. You want it to be about 8x14 inches. Cover the dough with plastic wrap and place in the fridge for one hour or freezer for 15 minutes.
Remove the dough from the fridge and roll out on a floured surface to an 8x24 inch rectangle.
Fold the top half down to the middle and then fold the bottom half over the top and turn the dough clockwise to the left. This marks the first learn and creating three layers. Cover and refrigerate for one hour or freeze for 15 minutes.
Remove the dough from the fridge and roll out to an 8x24 inch rectangle again. Repeat folding the top half to the middle and the bottom half over the top and turning clockwise. This marks the second turn and creating nine layers. Cover and refrigerate for one hour or freeze for 15 minutes.
Remove the dough from the refrigerator and roll out to an 8x24 inch rectangle one last time. Repeat folding the top half to the middle and the bottom half over the top and turning clockwise. This marks the third turn and creating 27 layers. Cover and refrigerate overnight.
To form the croissants, cut the dough in half and place one half in the fridge.
On a floured surface, roll out the dough to a 10x16 inch rectangle. With a knife, trim the edges of the dough.
Using a pizza cutter or sharp knife, slice the dough in half vertically. Each skinny rectangle will be five inches wide. Then cut three even slices horizontally, yielding eight 5×4 inch rectangles.
Place a few small pieces of chocolate on the edge of the dough and roll tightly so it is enclosed in the dough. Place the croissants, seam-side down, on a parchment-lined baking sheet. Repeat with the other half of the dough.
Brush the croissants with the beaten egg, saving the rest of the egg wash for later. Cover and place the croissants in a warm place to rise for 2 hours.
Preheat oven to 400°F. Brush the proofed croissants with egg wash one more time. Bake for 20 minutes, or until golden browned, rotating halfway through. Remove from oven and transfer to a wire to cool slightly before serving.