If using active dry yeast, stir your yeast into your warm water and set aside for 5 minutes to dissolve.
Add flour and salt to a medium bowl and mix. Set aside.
Add yeast mixture, warm milk, sugar, cardamom, and eggs to the bowl of a stand mixer, fitted with the dough hook. If using instant yeast, simply add the yeast, along with the water, milk, sugar, cardamom and eggs to the bowl.
Mix on medium speed for 2 minutes, until somewhat well mixed- it doesn't have to be totally cohesive.
With the mixer on low speed, gradually add in the dry ingredients. Mix on low until well mixed, then increase the speed to medium and mix for 5-7 minutes. The dough will likely still stick to the sides of the bowl.
Decrease the mixer speed to low again and add butter one pat at a time until it is all incorporated into the dough. If it clings to the side of the bowl, use a spatula to scrape the sides.
Once all the butter is incorporated, increase the mixer speed to medium again for a couple more minutes. The dough should cling to the dough hook more but may not entirely clear the sides of the bowl.
Place the dough in a lightly greased large bowl. Cover the bowl with plastic wrap and place it in a warm place to rise until doubled- one to 1.5 hours (depending on the temperature of your kitchen).
Optional: After the first rise is complete, pop the dough in the freezer for 30 minutes before shaping to make it a little easier to shape. This is a pretty soft, tacky dough- this is a good thing, because when it's baked it will be beautifully soft and fluffy!
Prepare a lightly floured surface and use a bowl scraper to turn your dough gently onto your work surface. You may wish to lightly flour the top of your dough and your rolling pin as well.
Line your cast iron pan with parchment paper and lightly grease the paper with butter.
Use your rolling pin to gently roll the dough out into a large rectangle, about 12 inches by 16 inches is a good size.
In a small bowl use a fork to mix together the softened butter, brown sugar and cinnamon until a well-blended, soft mixture forms.
Scoop the butter & sugar mixture onto the dough rectangle and use a small spatula to gently spread the mixture over the surface of the dough. Starting on one side, roll the dough up into a fairly tight log. If the dough sticks to the counter, gently use a bowl scraper or bench scraper to pry it up and keep rolling.
Use a sharp knife to slice the log of dough directly down the middle the long way.
Turn the halves of dough so that you have room to work with them. Place them so that the cut sides, with the filling showing, are both facing up. Pinch the pieces together on one end.
Cross one half over another in an "X" shape. Repeat gently, continuing to keep the cut sides up while crossing the pieces of dough over one another until you get to the other end. Pinch the other ends of the dough together.
To shape the roll, start with one end in the middle and wrap the rest around it in a circle/spiral. Tuck both ends under the roll gently and hoist the whole thing onto the prepared pan. Cover with plastic wrap and leave to rise until puffy, about 45-60 minutes.
Toward the end of the second rise, preheat your oven to 375 degrees.
Before baking, optionally drizzle the heavy cream over the top of the roll for a little extra fluff!
Place your pan in the oven and bake for 20 minutes, then rotate it 180 degrees and bake for 20-25 more minutes, until golden brown.
Toward the end of your bake time, prepare the glaze. Melt butter in a small-medium glass container and whisk in the powdered sugar, vanilla, cream and salt (if using) until a smooth glaze forms.
When your cinnamon bun is done baking, remove it from the oven. Let it sit in the pan for 10 minutes, then pour the glaze over the top.
Cut a big slice and enjoy warm!