JS introduced promises to the world around 2005 (they were in an unused experimental language a few years before).
async/await is mostly specialized syntax over generators. I'd note that ES4 had generators in the early 2000s
F# introduced async/await in 2007.
C# was mostly copying F# (like it's done for almost every new feature in the past decade or so).
Haskell libraries added support around the same time as C# (likely inspired by F#)
JS had the feature for several years via transpilers before it was finally added officially.