Preheat oven to 350°F.
In a medium saucepan, combine the milk, sugar, butter, cinnamon, and salt and place over medium heat. Stir occasionally until the butter is fully melted. Set aside and allow to cool slightly, about 10 minutes.
WHile the milk is cooling, lightly butter an 8-inch square baking dish, and place the bread cubes in the baking dish.
Once the milk mixture is just warm to the touch, whisk in the eggs, one at a time, then the vanilla. Pour the custard over the bread, making sure to soak any dry pieces on top that got missed in the pour. (At this point, I like to let mine site for 20 to 30 minutes so the bread can soak up the liquid.)
Bake for 40 to 45 minutes or until golden brown on top and a knife inserted in the center comes out clean.
While the bread pudding is baking, combine the milk, cream, sugar, and butter in a medium saucepan and place over medium heat. Stir occasionally until the butter and sugar are fully melted and the mixture is steaming.
Meanwhile, dissolve the cornstarch is ¼ cup water, or use bourbon or rum for a boozy kick. Once the milk mixture is steaming, stir in the cornstarch. Stir constantly until the mixture has thicken. Remove from the heat and stir in the vanilla and salt if desired.
Pour some of the sauce over the warm bread pudding and serve with extra sauce.
