Heat 2 tablespoons oil in a large frying pan over medium-high heat.
Add bay leaf, cinnamon stick and cloves. Sauté, stirring, for about 30 seconds.
Add garlic, ginger and green chilies. Sauté, stirring occasionally, for about 1 minute or until fragrant.
Add onions. Sauté, stirring occasionally, for about 2-3 minutes or until golden.
Add ground turmeric, ground fennel, ground coriander and red chili powder. Sauté, stirring, for about 30 seconds or until aromatic.
Add tomatoes and curry leaves. Sauté, stirring, for about 2-3 minutes or until mushy.
Add chicken. Stir to combine. Season with salt. Stir fry for 10 minutes.
Add hot water. Stir to combine. Cook, covered, for about 10-15 minutes or until chicken is cooked through.
Add coconut milk, garam masala and ground black pepper. Stir to combine. Simmer for another 5 minutes.
To make the tempering, heat oil in a small frying pan. Add mustard seeds, shallots, red chilies, curry leaves and coconut flakes (if using). Stir fry for 2 minutes or until shallots are browned. Remove from heat. Add to the curry. Stir. Garnish with curry leaves. Serve with your favorite side.