Prepare the dough: Whisk the warm water, warm milk, yeast, and sugar together in the bowl of your stand mixer fitted with a dough hook or paddle attachment. Cover and allow to sit for 5 minutes.
Add the butter, salt, and 1 cup flour. Beat on low speed for 30 seconds, scrape down the sides of the bowl with a rubber spatula, then add another cup of flour. Beat on medium speed until relatively incorporated (there may still be chunks of butter). Add the final cup of flour and beat on medium speed until the dough comes together and pulls away from the sides of the bowl, about 2 minutes. *If you do not own a mixer, you can mix this dough with a large wooden spoon or rubber spatula. It will take a bit of arm muscle!*
Knead the dough: Keep the dough in the mixer and beat for an additional 2 minutes or knead by hand on a lightly floured surface for 2 minutes.
1st Rise: Lightly grease a large bowl with nonstick spray. Place the dough in the bowl, turning it to coat all sides in the oil. Cover the bowl with aluminum foil, plastic wrap, or a clean kitchen towel. Allow the dough to rise in a relatively warm environment for 1-2 hours or until double in size. (See note3 for overnight rise option.)
Grease a 9x5-inch loaf pan.
Shape the bread: When the dough is ready, punch it down to release the air. Lightly flour a work surface, your hands, and a rolling pin. Roll the dough out into a large rectangle, about 8x15 inches. Roll it up into an 8 inch log and place in the prepared loaf pan.
2nd Rise: Cover shaped loaf with aluminum foil, plastic wrap, or a clean kitchen towel. Allow to rise until it's about 1 inch above the top of the loaf pan, about 1 hour.
Adjust oven rack to a lower position and preheat oven to 350°F (177°C).
Bake the bread: Bake for 30-34 minutes or until golden brown on top. If you gently tap on the loaf, it should sound hollow. If you notice the top browning too quickly, loosely tent the pan with aluminum foil. Remove from the oven and allow bread to cool for a few minutes before slicing and serving. Feel free to let it cool completely before slicing, too.
Cover leftover bread tightly and store at room temperature for 2-3 days or in the refrigerator for up to 10 days.