Promises are objects that represent the eventual completion or failure of an asynchronous operation. They provide a way to handle asynchronous
operations in a more organized and manageable manner. To use await, you need to ensure that you are calling a function or an expression
that returns a promise.
The reason await should only be used on a promise is that it expects the operand to be a promise object. When you use
await, it waits for the promise to be resolved or rejected and then returns the resolved value or throws the rejection reason,
respectively. If the operand of await is not a promise, awaiting it is redundant and might not have been the developer’s intent.
If you try to use await on a non-promise value, such as a regular object or a primitive type, it will not pause the execution of the
function because there is no asynchronous behavior involved. Instead, await will convert the value to a resolved promise, and waits for
it.
const x = 42; await x; // Noncompliant: x is a number, not a promise
You should only use await on promises because it is designed to handle asynchronous operations and works in conjunction with the
Promise API to provide a clean and intuitive way to write asynchronous code in JavaScript.
const x = Promise.resolve(42); await x;