mirror of
https://github.com/tommyskeff/futur4j.git
synced 2026-03-19 02:01:22 +00:00
fix: apply orDefault function when already completed
This commit is contained in:
@@ -504,11 +504,12 @@ public abstract class AbstractPromise<T> implements Promise<T> {
|
||||
|
||||
@Override
|
||||
public @NotNull Promise<T> orDefault(@NotNull ExceptionalFunction<Throwable, T> function) {
|
||||
PromiseFactory factory = getFactory();
|
||||
return useCompletion(() -> {
|
||||
CompletablePromise<T> promise = createLinked();
|
||||
addDirectListener(promise::complete, e -> runCompleter(promise, () -> promise.complete(function.apply(e))));
|
||||
return promise;
|
||||
}, getFactory()::resolve, getFactory()::error);
|
||||
}, factory::resolve, e -> supplySafe(() -> factory.resolve(function.apply(e)), factory::error));
|
||||
}
|
||||
|
||||
private static class DeferredExecutionException extends ExecutionException {
|
||||
|
||||
Reference in New Issue
Block a user