For asynchronous evaluation, Clojure’s core features include the future, proposed by Baker and Dewitt in The Incremental Garbage Collection of Processes [HB77] as a means of concurrent evaluation in 1977. The promise, facilitating synchronization of concurrent threads, is also provided. Promises were proposed in 1976 by Friedman and Wise in their paper The Impact of Applicative Programming on Multiprocessing [FW76]. Both futures and promises enjoy widespread implementation in both functional and object-oriented languages.
These aren’t the only concurrency mechanisms currently available. Clojure added the core.async contrib library to supplement its concurrency toolkit in 2013.