¿Cómo se cancela un jQuery fadeOut () una vez que ha comenzado?

Tengo un elemento div básico para representar un mensaje que muestro durante unos segundos y luego lo desvanezco usando

$('#message').fadeOut(5000);

Quiero poder cancelar el desvanecimiento si el usuario pasa el mouse sobre el div.

¿Cómo puedo cancelar el desvanecimiento?Una vez que el método fadeOut ha empezado a desvanecerse el div?

Mi código existente, a continuación, funciona si el mouse ingresa al div mientras se muestra, pero debo permitir que el usuario se coloque sobre el div una vez que haya comenzado a desvanecerse.

$('#message').mouseenter(function() {
  clearTimeout(this.timeout);
});
$('#message').mouseleave(function() {
  this.timeout = setTimeout("$('#message').fadeOut(5000)", 3000);
});
$('#message').fadeIn(2000, function() {
  this.timeout = setTimeout("$('#message').fadeOut(3000)", 3000);
});

Respuestas a la pregunta(2)

Su respuesta a la pregunta