No, it's needed if cb is already null.  In that case, this request has already timed out, and the Mutex needs to re-run unlock to either call the next waiting process or mark the mutex as unlocked.

If you removed it entirely, then a timeout would leave the mutex in a locked state, never checking for more waiting lock requests.