Отличие между обычным вызовом и await вызовом внутри асинхронной функции
Всем доброго дня. Прошу по мере возможности наглядно обрисовать разницу между вызовом обычной процедуры и await-функции внутри асинхронной функции. Для примера. Есть async функция sendMail, навешанная на submit формы и производящая валидацию данных на форме и последующую отправку их в ajax-запросе на сервер. Так вот вызов функции валидации происходит обычным способом, а ajax-вызов fetch идет как await. Я не понимаю, в чем принципиальное различие вариантов вызова этих функций? Если от вызова fetch мы уберем await, или добавим await к вызову процедуры валидации, что изменится в порядке выполнения скрипта?
async function formSend(e) {
e.preventDefault();
// 1. валидация формы
let error = formValidate(form);
// 2. сбор данных с формы + прикрепление изображения
let formData = new FormData(form);
formData.append('image', formImage.files[0]);
if (error === 0) {
form.classList.add('_sending');
// AJAX-запрос к серверу
let response = await fetch('sendmail.php', {
method: 'POST',
body: formData
});
if (response.ok) {
let result = await response.json();
alert(result.message);
formPreview.innerHTML = '';
form.reset();
form.classList.remove('_sending');
} else {
alert('Ошибка отправки данных');
form.classList.remove('_sending');
}
} else {
alert('Заполните обязательные поля');
}
Всем заранее спасибо за ответы.