I very rarely do this but had to do it just last week, 20 minutes before my booking, because I got a blinding mingraine then vomitted from it.
I dont think the guy believed me, but I explained what happened and asked to reschedule as I simply wouldn't be able to give 100%. He hasnt rescheduled, but oh well, gping through with it wpyld have been absolute torture.
Sometimes it's a lose / lose situation. Cancel, the client gets pissed off so he wont rebook. See the client although not 100%, he gets a substandard service and doesnt rebook.
What can you do?!