There are situations where work can’t immediately continue, e.g.
In such cases, I find it tempting to pick up a different task to work on in parallel, but the context switching overhead often makes it not worth it. This secondary task I picked up won’t have my full attention, as I’m really waiting to resume working on the primary task.
I find it better to take a break (or dedicate myself to a on-work task) in such a situation. This is easiest in a non-synchronous environment, because Asynchronous working environments make it easier to divide up time.
This doesn’t only happen to me: In one particular case, I saw someone keep working on a change list, adding non-requested and even non-useful features, presumably to avoid being stuck in the situation of having to wait for a code review and having nothing to do. (Though this might be just my interpretation.)