About 2 hours before you begin to cook, rinse the basmati rice under cold water in a fine mesh strainer then cover the rice with 6 cups of water. Stir in 2 tablespoons of salt. Set aside to soak for at least 2 hours. Do not skip this step.
Place the saffron threads in a small prep bowl and pour the rosewater over them. Soak the raisins in hot water.
Bring 6 cups of fresh water to the boil. Drain the rice and add it to the boiling water. Cook 10 minutes on a constant medium-high boil. If the rice is boiling too fast and you're afraid it might burn, then you can reduce the heat to a medium boil.
While the rice is boiling, saute the slivered onion or shallots in butter or olive oil (or a combination of the two) in a non-stick saucepan. Cook the onions until soft and transparent.
Stir in the almonds with the onion and saute, stirring frequently to avoid burning. Saute until the almonds turn a light golden brown.
Drain the liquid from the raisins and stir them into the onions and almonds along with salt, to taste.
Strain the parboiled rice in the mesh strainer again, removing as much of the liquid as you can. Stir the drained rice into the onion/almond mixture until every grain of rice is coated and glistening.
Smooth out the top of the rice (I use a flat spatula) then pour the saffron and rosewater over the rice but DO NOT stir.
Cover the pot with a clean dish towel (a tea towel folded up works perfectly for this and it's also lint free). Place the lid on the pot, flipping the ends of the towel over the top. I also secure the towel to the lid with string. Simmer gently for approximately 30-40 minutes on the LOWEST heat with the smallest burner on your stovetop.
To serve, carefully remove the rice from the sides by gently loosening with a spatula. Invert the pan and arrange the rice on a large serving platter. Sometimes this trick works and sometimes it doesn't. It takes practice! I'm getting much better at preparing this type of rice...