Make a slurry: In a bowl, whisk 1 cup of the milk with the cornstarch until completely smooth.
No lumps.
Heat the base: In a medium pot, add the remaining 3 cups milk, sugar, and salt. Warm over medium heat, stirring until the sugar dissolves and the milk is steaming.
Thicken: Whisk the slurry again, then slowly pour it into the warm milk while stirring constantly. Keep stirring.
The mixture will start to thicken after 3–5 minutes.
Flavor: Once it reaches a gentle bubble and a pudding-like consistency, turn heat to low. Stir in rose water, orange blossom water, and vanilla. Start with the lower amount of rose water and add more to taste.
Finish: Cook 1–2 minutes more, stirring, until silky and smooth.
Remove from heat.
Set: Pour into small bowls or ramekins. Tap gently to release air bubbles. Let cool 15 minutes, then cover and refrigerate for at least 2 hours.
Serve: Top with chopped pistachios.
Add a light drizzle of honey or simple syrup, and a pinch of cinnamon or cardamom if you like.