Drain the rice and place it in a microwave-safe bowl with the bay leaves and salt to taste. Add 2 cups of water and microwave 10 minutes or until the rice is mostly but not fully cooked. You can also do this on the stovetop. Bring a large pot of water to boil, add salt and bay leaves and add the drained rice. Cook about 7-8 minutes until rice reaches the right level of doneness, then drain and set aside.
Heat ½ tablespoon of oil in a large saucepan with a tight lid. Add the onions and garlic with a pinch of salt and ground black pepper and sauce until the onions start to brown.
Add the tofu cubes, if using, and continue to cook, turning the pieces of tofu over carefully every couple of minutes so they brown slightly without breaking. Add the asparagus along with the turmeric, cayenne, ground cinnamon and more salt if needed. Continue to cook a couple of minutes, then add in the tomatoes and lemon.
Cover and cook 10 minutes, then remove everything to a bowl.
To the same saucepan, add half the saffron milk and the remaining 2 tbsp of oil along with 2 tbsp water and 1 cup of the cooked rice. Mix them together lightly with the spatula and spread it evenly across the bottom of the pan, Next, layer on half the remaining rice. Over that, add half the tomato-asparagus mixture.
then continue to layer on the rest of the rice. Over the rice, sprinkle the remaining half of the saffron milk and then proceed to layer with the remaining tomato-asparagus mixture.
Cover the saucepan with aluminum foil or parchment paper. Cover with a tight lid and place over high heat for five minutes. Turn the heat to low and continue to cook 40 minutes.
Once cooking is done, let the rice stand at least 10 minutes before you open and serve.