For the BBQ sauce: In a large sauce pan, heat the olive oil over medium heat. Add the onion and saute for 5 minutes until tender. Add the garlic and saute again for 1 minute. Whisk in the rest of the ingredients for the BBQ sauce.
Bring the mixture to a boil, then lower to simmer. Simmer for 40-45 minutes until thickened. Adjust seasoning to taste. Keep warm on the stove until ready to use.
Place the chicken cubes in a large bowl and season with salt and pepper. Ladle in 2 cups of the BBQ sauce and toss to coat evenly. Now take 4 metal skewers (or 4 wooden skewers soaked in water for 30 minutes) and skewer the chicken pieces until the skewers are full from top to bottom.
Set aside. Take the rest of your BBQ sauce (not the sauce the chicken was tossed in—throw that out at this point) and place in a small bowl. Set aside.
Preheat your grill to medium high, and brush olive oil onto the grates to prevent sticking.
Place your skewers on the grill and rotate every 2-3 minutes, brushing with the reserved BBQ sauce after each rotation.
Cook for a total of 10-12 minutes or until the chicken has cooked through and there is a little char on each side. Remove from grill and set aside to rest for 2-3 minutes before serving.
For the avocado cream, combine the avocado, mayo, lime juice, milk, cayenne pepper and a dash of salt and pepper in a food processor. Pulse until completely smooth. Transfer to an airtight container and refrigerate until ready to use.
Sprinkle the chicken skewers with cilantro and serve with avocado cream. Enjoy!