Looks good, but does your message care about it's own timeout?  It's that up to the read operations on the Q?