Ah how frustrating mate. I feel your pain. What I do now is just instantly cancel if they start messing me around. If it's a simple, "Can you come a bit earlier?" or something, I can be flexible. But if I don't get straight answers to my enquiries, or I get the sense I'm being treated like an idiot I just bail.