Фундаментальное отличие async await в python и javascript?
Если не использовать await, сразу после вызывоа функции, то она попадет в event loop. Но не все операции могут быть по настоящему асинхронными. На картинке хорошо отображено, то как это работает: 

Если например, это работа с сетью и сразу же не ожидать ответ, то код продолжит выполнение до того момента, пока данные не нужны будет, а получение данных по сети будет асинхронным
const data = fetch('http://exmapl.ecom');
// ... - какой-то код
await data()
Не могу сказать за Python, но не уверен, что вы правильно понимаете его механизм await. Сомневаюсь, что он продолжает выполнять текущий исполняемый поток после await, т.к. это нарушит исполение кода.
Про JS могу сказать, что вы видимо не до конца понимаете какой код будет исполнен действительно асинхронно, а какой последовательно (т.е. блокируя основной поток).
const axios = require('axios')

async function doReq1(){
    const res = await axios.get('http://localhost:12000?id=1')
    return res
}

async function main(){
    doReq1().then((data) => {
        console.log(data.data)
        console.log("After req")
    });
    console.log("Before req")
}
main()
Данный код выведет 1) Before req 2) Hello 1! 3) After req
Т.е. AfterReq будет исполнен после того как асинхронная операция получит результат, т.е. подождет (await) результата.
Аналогичный код с await
const axios = require('axios')

async function doReq1(){
    const res = await axios.get('http://localhost:12000?id=1')
    return res
}

async function main(){
    console.log("Before req")
    let res = await doReq1()
    console.log(res.data)
    console.log('After req')
}

main()