To make the sauce: heat half of the oil in a large saucepan over medium high heat. Fry the shallots and onion until soft and transparent.
Stir in butter, lemon juice, garlic, ginger, half the garam masala, the chilli powder, cumin and bay leaf. Cook, stirring, for 1 minute.
Add tomato puree, and cook for 2 minutes, stirring frequently.
Stir in the cream and yogurt. Reduce heat to low, and simmer for 10 minutes, stirring frequently. Season with salt and pepper. Remove from heat and set aside.
Heat the rest of the oil in a large heavy frypan over medium heat. Cook chicken until lightly browned, turning once, about 10 minutes. Reduce heat and season with the rest of the garam masala and cayenne. Stir in a few spoonfuls of sauce, and simmer until liquid has reduced, and chicken is no longer pink. Spoon the cooked chicken into the sauce.
Mix together the cornflour and water, then stir into the sauce. Adjust seasonings and cook for 5 to 10 minutes, or until the sauce thickens.
A favourite at home. Easy to follow recipe. The second time we made it though, we left all the chilli and Cayenne out of it. Those that like it spicy just added the cayenne pepper after it was served. Yum. - 10 Mar 2014