# async / return await explained This is yet another explanation of why `async` and `return await` is pointless, coming from [this post](https://webreflection.medium.com/a-better-async-await-approach-2d130de5f39a). ```js // async means that this: const fn = async (...args) => {/* stuff */}; // is basically the equivalent of this: const fn = (...args) => new Promise(resolve => { // async wraps the original callback as Promise const original = (...args) => {/* stuff */}; // and resolves it resolve(original(...args)); // if an error is throws and no try/catch // is around, it breaks outer execution }); // await means that this: const val = await fn(); // is basically the equivalent of this: Promise.resolve(fn()).then(result => { // the program pauses until result is known // and it keeps executing with val as result const val = result; // if fn() throw an error and no try/catch // is around, it breaks outer execution }); // so that this: const fn = async any => await any; // is the equivalent of this const fn = any => new Promise(resolve => { const original = any => Promise.resolve(any); original.then(resolve); // can you see that there are 2 resolves // while one would be enough? }); // that means that this: const fn = async any => any; // becomes this: const fn = any => new Promise(resolve => { const original = any => any; resolve(original(any)); }); // and that's *all* we need, anything else // is unnecessary overhead no software need ```