Promises [LS88] are used to start a computation and return while the computation is being performed (just after starting it). In the context of group communication, a promise is used to send a request to all (or N) members of the group and return immediately. The promise can be checked for completion and number of responses received so far. The caller might perform some other work, periodically check the status of the computation, and - depending on it - retrieve the result(s) from the promise.
Promises allow clients to asynchronously invoke a method call without having to be blocked until the result is returned.
Their main value lies in starting multiple invocations in parallel, and gathering the results later (load balancing).
In contrary to the work described in [LS88], promises as used in the context of JavaGroups are not returned from some method call, but used as starting point as well.