Some little intricacies about beamer.
The list of commands that work outside frames (when ignorenonframetext is set) is hard-coded.
That's annoying as it means that wrapping one of these in another command, or modifying one, doesn't work.
The new command has to be wrapped in \mode<all>{}, or added to the list (which is in beamer@treat set in beamerbasemodes.sty).
The beamerpauses counter works a little differently inside and outside lists.
Basically, the count is off by one in one of them.
When using a list with automatic pausing ([<+->]), one can write
\alert<.>{alert} to get something alerted as it is unveiled.
However, outside a list, one has to use \alert<.(1)>{alert}.
Also, putting a \pause straight after a list makes it pause twice.
But not putting a \pause means that it doesn't pause at all.
The solution is to subtract one from beamerpauses and then do a
\pause (of course, one should put this into a separate command, say
\itpause, in case this behaviour gets corrected later on; then
simply putting \itpause equal to \pause will mean that the correct
behaviour is always correct).
Where it gets confusing is in adding additional pauses within a list
environment.
The first has to be an \itpause and the rest \pauses, but there
has to be a last \pause before the next item.