Prepare the Oven: Set your oven to 350°F (175°C). Lightly grease a 9x13-inch baking dish using butter or non-stick spray.
Prepare the Bread: Place the cubed stale bread in the prepared baking dish. If using raisins or currants, sprinkle them evenly over the bread.
Make the Custard: In a large mixing bowl, whisk together the milk, heavy cream, eggs, granulated sugar, vanilla extract, ground cinnamon, and salt until well combined and the sugar is dissolved.
Combine Bread and Custard: Pour the custard mixture over the cubed bread, pressing down gently with a spatula to ensure all the bread is soaked in the liquid. Allow the mixture to rest for approximately 10 minutes so the bread can soak up the custard.
Drizzle with Butter: Drizzle the melted butter over the top of the bread pudding.
Bake the Bread Pudding: Place the dish in the preheated oven and bake for 45-50 minutes, or until the custard is set and the top is golden brown. The center should not be too jiggly when shaken gently.
Prepare the Vanilla Sauce: While the bread pudding is baking, make the vanilla sauce. In a small saucepan, combine the powdered sugar, heavy cream, and vanilla extract. Heat over medium-low heat, stirring constantly, until the sugar is dissolved and the sauce is smooth. If the sauce is too thick, add a tablespoon of milk to reach your desired consistency.
Serve: Remove the bread pudding from the oven and let it cool for about 10 minutes. Serve warm with a generous drizzle of vanilla sauce on top.