[RESOLVIDO]Problema de principiante com a classe Scanner

Sou iniciante em Java e estou tentando aprender a classe Scanner, mas tem algumas coisas que não consigo entender:
Considerem o código abaixo:

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		System.out.println("teste-01");
		Scanner scanner = new Scanner(System.in);

		while(true) {
			System.out.println("teste-02");
			if(scanner.hasNextInt()) {
				System.out.println("valor digitado: " + scanner.nextInt());
				break;
			}
			else {
				System.out.println("digite um numero inteiro");
			}
		}
	}
}

A saida é:

teste-01
teste-02
3 //número que digitei
valor digitado: 3

1- Por que ele está bloqueando e esperando um entrada em scanner.hasNextInt() sendo que na documentação não diz que ele vai bloquear?
https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#hasNextInt--

2- Por que ele está entrando em loop infinito quando eu digito um caracter ou número com ponto(número float/double)? Parece que scanner.hasNextInt() só bloquea esperando uma entrada do teclado na primeira vez e depois não espera mais. Não estou entendendo isso.

3- Como eu faço para arrumar isso? Eu quero que ele fique pedindo para o usuário digitar um número inteiro até que ele realmente digite e então termine.

É só acrescentar um scanner.next(); após o System.out.println(“digite um numero inteiro”);
Isso fará com que você possa escrever uma nova String para ser avaliada.