...
Guava provides a similar capability with sameThreadExecutor. It is somewhat related to the JDK's CallerRunsPolicy for rejected execution.
Further Analysis
Delivery
The APIs in this proposal can be delivered either as a library or as an extension to the Clojure language.
Extending the Clojure language has the benefits of enhancing the existing promise and future in a standard way. Having a standard mechanism for callbacks at the language level will facilitate sharing callbacks across different libraries and frameworks.
Exceptions
A callback function (really, any function) can do one of three things:
...
Promises do not provide an API to report partial progress during a long-running operation. Progress reporting can be handled through other means such as watches.
ClojureScript
Promises can be implemented in ClojureScript, subject to the following limitations:
...
References / Related Work
- Java
- Listenable Futures in Google Guava
- ListenableFuture in Async HTTP Client
- Scala
- JavaScript
- Scala
- Java
- Listenable Futures in Google Guava
- ListenableFuture in Async HTTP Client
- C# / .NET
- Python