Futures 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 future.
The reason await
should only be used on a future is that it expects the operand to be a future object. When you use
await
, it waits for the future 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 future, awaiting it is redundant and might not have been the developer’s intent.
If you try to use await
on a non-future 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 future, and will wait
for it to complete.
var x = 42;
await x; // Noncompliant: x is a number, not a promise
var x = functionReturningFuture();
await x;