Using 2 Tbsp of butter in a large skillet over medium-high heat, brown the pieces of the chicken so each side is browned. They do not need to be fully cooked all the way through. Work in batches, and set aside when you're done.
Melt another 2 Tbsp of butter in the pan over medium heat. Add the onion, and cook until beginning to soften — about three minutes. Add the garlic, garam masala, ginger, chili powder, cumin, and cayenne. Stir to combine, and cook for about 45 seconds before adding the tomato sauce.
Bring the mixture to a simmer and let cook for five minutes before adding the cream. Bring the mixture back to a simmer, add the browned chicken, and let simmer for 10-15 minutes. Keep the heat low here — not a rolling boil — and feel free to cook longer (you may need to add more liquid) for more tender chicken.
Stir in the remaining 2 Tbsp of butter, and season with salt and pepper, to taste.
Serve garnished with lime and cilantro, alongside rice and naan.
*I used 1 cup HEAVY cream, and 1 cup water. You could use table cream, or sub 1 cup for milk (but be careful for curdling if you lessen the fat content!). **** There have been MANY questions about tomato sauce. If you aren't in the USA, you probably call it something else. This is not ketchup. I used something very very similar to this product.