The terms "future", "promise", "delay", and "deferred" are often used interchangeably, although some differences in usage between "future" and "promise" are treated below. Specifically, when usage is distinguished, a future is a "read-only" placeholder view of a variable, while a promise is a writable, single assignment container which sets the value of the future. Notably, a future may be defined without specifying which specific promise will set its value, and different possible promises may set the value of a given future, though this can be done only once for a given future. In other cases a future and a promise are created together and associated with each other: the future is the value, the promise is the function that sets the value – essentially the return value (future) of an asynchronous function (promise). Setting the value of a future is also called "resolving", "fulfilling", or "binding" it.