To get the behavior POSIX specifies ("If a signal is delivered to a thread waiting for a mutex, upon return from the signal handler the thread resumes waiting for the mutex as if it was not interrupted.") would require additional handling, such as (I'm guessing) checking the cause of the wake-up and looping if necessary. Admittedly I don't know enough about the subject and the internals to propose a specific solution yet.
I think that you could set a signal mask to block all signals except the one that wakes up the timed wait and the one that could cancel the task/thread.
There are some complexities and the possibility to break things. If you want, you could just create an issue with all of the relevant information and let it pend of awhile. I don't think there is any rush to change this behavior, is there?