Heat up some oil (about 1 to 2 tablespoons) in a large saucepan pan under medium high heat.
Add in the marinaded chicken and cook while stirring intermittently until the chicken is mostly cooked through, about 8 to 10 minutes. Transfer the chicken into a large bowl. Set aside.
In the same pan used to cook the chicken under medium heat, add 1 tablespoon butter and 1/2 tablespoon oil.
Once the butter is fully melted, add in the onions, garlic and ginger. Cook the onion mixture while stirring until the onions start to soften, about 1 to 2 minutes.
Mix in the seasonings (paprika, garam masala powder, cumin, coriander, salt and black pepper), sugar and then the tomato paste. Cook the mixture while stirring to develop its flavors, about 1 to 2 minutes.
Next, mix in the tomato sauce and water (or broth). Reduce the heat to medium low and simmer the sauce, stirring occasionally, for 8 to 10 minutes or until it starts thicken. Cover the pan with a lid if the sauce starts to splatter.
Mix in the heavy cream and then add the cooked chicken and its juices into sauce. Continue to cook, stirring occasionally, for an additional 6 to 8 or until the chicken is fully cooked and the sauce has thickened.
Mix in the remaining butter until it is fully melted and incorporated into the sauce. Remove the pan from the heat. In a small dish or dip bowl, spoon in enough of the sauce (without the chicken) to fill. Set aside. With the remaining butter chicken, set the pan aside to cool, about 10-12 minutes, before assembling the tacos.
As the butter chicken cools, make the seasoned onion topping (optional). Add the onions, finely chopped cilantro, lime juice, onion powder, salt and black pepper into small bowl. Mix to combine and set aside.