For the BBQ sauce: Combine the ketchup, mustard, brown sugar, garlic, cider vinegar, Worcestershire, Cajun seasoning and 1/2 cup water in a small saucepan over medium heat. Bring to a boil, stirring until ingredients are completely incorporated. Reduce the heat to low and simmer gently until the flavors have melded and sauce has thickened enough to coat the back of a spoon, 30 to 40 minutes.
Remove from the heat and let cool to room temperature. If not using right away, cover and refrigerate for up to 2 weeks.
For the pulled pork: Preheat the oven to 275 degrees F.
Spread out the onions and garlic in an even layer in a roasting pan and pour in the chicken stock. Combine the Cajun seasoning and brown sugar in a small bowl. Pat the pork shoulder dry with paper towels and then rub all over with the spice mixture. Set the pork on top of the onions and garlic and cover the roasting pan with foil. Transfer to the oven and cook until the pork is fork tender, 6 to 8 hours.
Remove the pork to a cutting board to cool. Strain the cooking liquid through a fine-mesh sieve and reserve.
If the pork has a bone, remove and discard it. With two forks, shred the meat into bite-size pieces, discarding any large pieces of fat. Return the shredded meat to the roasting pan. Add 2 cups of the BBQ sauce and a bit of the reserved cooking liquid if too dry.
For the coleslaw: Combine the red and green cabbage, carrots and red onions in a large bowl. Whisk together the mayonnaise, cider vinegar, sugar, and some salt and pepper in a medium bowl, and then add to the cabbage mixture. Mix well to combine. Taste for seasoning; adjust with more salt, pepper or sugar as needed.
Serve the pulled pork on buns topped with coleslaw.