In a saucepan over medium heat, sauté the onions in one tablespoon peanut oil until translucent.
Add the butter, ginger garlic paste, lemon juice, chili powder, 1/2 teaspoon cayenne pepper, one tablespoon garam masala, cumin, and bay leaf. Stir for 30 seconds to a minute, until fragrant.
Add the tomato puree and continue to stir for another minute.
Add the yogurt and cream, then reduce the temperature to low and simmer the mix, stirring often, for approximately 10 minutes.
Add salt and pepper to the sauce, stir then remove from the heat.
Cook the chicken and combine
While the sauce is simmering, heat the other tablespoon of peanut oil, then add in the chicken pieces. Cook the chicken until lightly browned (10 to 12 minutes).
Once cooked, sprinkle the chicken with the additional tablespoon of garam masala and 1/2 teaspoon of cayenne pepper. Then take 1/2 cup of the finished sauce and add it to the chicken. Continue to cook the chicken in the sauce until the sauce has thickened. Then transfer the chicken into the saucepan containing the full amount of sauce.
Mix the cornstarch and 3 tablespoons water, then add to the butter chicken. Simmer the butter chicken over medium low until the sauce has thickened.
Serve over rice.
*If you want more heat, add additional cayenne at the end of cooking to your preferred heat level.