Я понимаю основную суть асинхронности: вещи не выполняются последовательно. И я понимаю, что в этом есть что-то очень мощное... якобы. Но для жизни я не могу окутать голову в код. Давайте взглянем на async Node.JS-код, который я ПИСЬЕТ... но не понимаю.
function newuser(response, postData) {
    console.log("Request handler 'newuser' was called.");
    var body = '<html>' + 
        '<head>' +
        '<meta http-equiv="Content-Type" content="text/html; ' +
        'charset=UTF-8" />' +
        '</head>' +
        '<body>' +
        '<form action=" /thanks" method="post">' +
        '<h1> First Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Last Name </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<h1> Email </h1>' +
        '<textarea name="text" rows="1" cols="20"></textarea>' +
        '<input type="submit" value="Submit text" />' +
        '</body>' +
        '</html>';
    response.writeHead(200, { "Content-Type": "text/html" });
    response.write(body);
    response.end();
}
Откуда появился ответ? PostData? Почему я не могу определить переменную в этом "обратном вызове", а затем использовать ее за пределами обратного вызова? Есть ли способ, чтобы несколько вещей были последовательными, а затем остальная часть программы async?