Alteração do cursor do JavaScript (e altere novamente)

Eu tenho esta página que faz algumas coisas descoladas do banco de dados que levam alguns segundos para serem processadas e, enquanto isso, eu gostaria de definir um"wait" cursor para que o usuário não saia e continue clicando no botão. Eu olhei para o

document.body.style.cursor = "wait"

O problema é que ele só funciona quando o mouse está sobre o corpo da página (ou seja, ainda mostra o ponteiro normal se estiver sobre um botão). Como posso configurá-lo para que, independentemente de onde o mouse esteja na página, ele mostre um ícone de espera?

Uma segunda parte dessa pergunta é que, uma vez concluída, como faço para recuperá-la? Se eu configurá-lo novamente para"default", isso parece substituir qualquer"hover" mudanças de cursor que eu havia definido no meu CSS (para que não se torne mais uma mão quando se passa por um objeto especificado, etc.).

EDIT: a primeira resposta funciona bem, exceto no IE, não atualiza o cursor (para que você observe a alteração do tipo de cursor) até que você realmente mova o cursor. Alguma correção?

questionAnswers(7)

yourAnswerToTheQuestion