Promise represents a unknown value now, that may become known in the future.

// Create Promise
// executor functions for resolving, rejecting
const ride = new Promise((resolve, reject) => {
	if (arrived) {
		resolve('driver arrived');
	} else {
		reject('driver bailed');
	}
});

// User Promise
ride
	.then(value => {
	console.log(value);
	})
	.catch(error => {
		console.log(error);
	})
	.finally(() => {
		console.log('all settled!')
	})