This seems to be an issue with 3.8 and newer. 3.7.5 doesn't exhibit this behavior.
There's a couple of ways to observe this. First, try writing out the following code character-by-character.
You'll get
let x = async () => {
        ~~~~~~~~
Cannot find name 'async'.
Alternatively, paste the full example into a buffer. Then erase the c in async.
Give it a second, then add it back. TypeScript doesn't seem to refresh its semantic diagnostics for some reason.
You'll get
let x = async () => {
        ~~~~
Cannot find name 'asyn'.