Line a large baking sheet with a few layers of paper towels. Lightly grease another large baking sheet with butter or nonstick baking spray. Set both aside for later use.
In a small bowl, combine the active dry yeast and warm water; set aside until it foams up, about 5 minutes.
In the bowl of a stand mixer fitted with the hook attachment, combine the warm milk and unsalted butter and, using a silicon whisk, stir until the butter has completely dissolved.
Add in the granulated sugar, large egg, large egg yolk, salt, and the yeast mixture and mix on medium-low speed until smooth. Gradually beat in the remaining all-purpose flour until a soft ball of dough forms around the hook. Don't knead the dough yet!
Transfer the dough to a large, lightly greased bowl, turning once to coat the top. Cover tightly with saran wrap and set aside to rise in a warm area until it appears to have tripled in size, about 1 hour.
Gently punch the dough down and turn it out onto a lightly floured work surface. Knead the dough into a smooth ball, about 7 to 8 times, or until it's uniform in texture.
Using a rolling pin, gently roll the dough out into a large rectangle, approximately 1/2 to 3/4 inch in thickness. Using a lightly floured 2 and 1/2-inch round dough cutter, cut equal circles from the rectangle.
Transfer the doughnuts to the prepared lightly greased baking sheet, spacing them an inch apart (they will rise). Cover the pan lightly with saran wrap and set aside for 45 minutes, or until the doughnuts have almost doubled in size.
When ready to fry, heat frying oil in a large, heavy-bottomed pot to 360°F. Fry doughnuts, a few at a time, for 1 to 2 minutes on each side, or until golden brown.
Transfer cooked doughnuts onto the prepared paper towel lined baking sheet, continuing until all doughnuts have been fried.
In a medium-sized bowl, whisk together the large egg yolks, granulated sugar, and cornstarch. Set aside.
In a medium-sized saucepan, warm the whole milk over medium heat until it comes to a gentle boil.
Remove the pan from heat and slowly whisk 1 cup of the hot milk into the egg yolk mixture, whisking constantly.
Return the mixture to the pan containing the remaining milk and place over medium-high heat. Cook, whisking constantly, until it comes to a boil. Once boiling, continue to cook, whisking constantly, for 2 minutes, or until very thick.
Remove from heat. Scrape the bottom and sides of the pan with a spatula then whisk until smooth. Whisk in the unsalted butter until completely melted. Then whisk in the pure vanilla extract and salt.
Strain the custard through a fine-mesh sieve into a medium-sized glass bowl. Cover with plastic wrap, pressing the wrap directly onto the surface to avoid a skin forming. Cool to room temperature, then refrigerate for at least 2 hours.
When ready to fill doughnuts, scrape the filling into a large pastry bag fitted with a small round nozzle. Using a large straw, or your pinky finger, make a small hole on the side of each doughnut. Carefully fit the nozzle of the bag into a doughnut and squeeze until you see the center begin to puff up.
Place finely chopped chocolate in a medium-sized heatproof bowl. Set aside.
Warm the heavy cream over medium heat until it comes to a boil. Add in the espresso powder, if using, and whisk until smooth.
Pour the cream over the chopped chocolate and let it sit for 1 minute, then whisk until smooth. Dip the top of each doughnut into the glaze, allowing excess chocolate to drip off before placing it on a large serving platter. Repeat with all doughnuts. Allow glaze to set for about 20 minutes.
Donuts are best served the day they are made. Store leftovers in the fridge, wrapped in saran wrap, for up to 48 hours.