Heat the oil or butter in a Dutch oven or other large pot, and then brown the meat. Pull the meat out and set aside.
Add the carrots and onion to the pot, and cook over medium heat about 5 minutes, just to soften slightly. If the pot is dry, add 1-2 Tbl more of oil or butter. Then add in the garlic and curry powder and stir to coat the vegetables. Cook for 1-2 minutes to bloom the curry powder.
Deglaze the pan with a bit of the beef broth. Then add the meat, the rest of the beef broth, water, Worcestershire, bay leaves, salt, pepper, thyme, and potatoes. Bring to a boil, then reduce the heat to a simmer. Cover and cook on low for 3-3.5 hours. For a stronger flavor, you can leave the lid cracked and allow the stew to reduce for 1-1.5 hours, and then cover it fully.
Once the meat and potatoes are cooked through and tender, make the roux in a separate pan. Heat the 3 Tbl butter until melted, then add the flour and whisk to make a thick paste. Continue whisking as you add the milk in slowly, in small increments. Allow the roux to cook and the pan to reheat for a few moments between each addition of milk. When all the milk is incorporated, add the roux into your stew and stir to combine. If you reduced the stew, you may not need all of the roux. Allow to cook for 10-15 minutes more then remove the bay leaves and serve.