diff --git a/README.md b/README.md
index efc8187..1e10728 100644
--- a/README.md
+++ b/README.md
@@ -14,8 +14,8 @@ repositories {
}
dependencies {
- compile 'dev.tommyjs:futur-api:2.5.0'
- compile 'dev.tommyjs:futur-lazy:2.5.0'
+ compile 'dev.tommyjs:futur-api:2.5.1'
+ compile 'dev.tommyjs:futur-lazy:2.5.1'
}
```
### Gradle DSL
@@ -25,8 +25,8 @@ repositories {
}
dependencies {
- implementation("dev.tommyjs:futur-api:2.5.0")
- implementation("dev.tommyjs:futur-lazy:2.5.0")
+ implementation("dev.tommyjs:futur-api:2.5.1")
+ implementation("dev.tommyjs:futur-lazy:2.5.1")
}
```
### Maven
@@ -42,12 +42,12 @@ dependencies {
dev.tommyjs
futur-api
- 2.5.0
+ 2.5.1
dev.tommyjs
futur-lazy
- 2.5.0
+ 2.5.1
```
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 1eb3b4d..9220e3c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ plugins {
subprojects {
group = 'dev.tommyjs'
- version = '2.5.0'
+ version = '2.5.1'
apply plugin: 'java-library'
apply plugin: 'com.github.johnrengelman.shadow'
diff --git a/futur-api/src/main/java/dev/tommyjs/futur/promise/AbstractPromise.java b/futur-api/src/main/java/dev/tommyjs/futur/promise/AbstractPromise.java
index c05f705..a4f8942 100644
--- a/futur-api/src/main/java/dev/tommyjs/futur/promise/AbstractPromise.java
+++ b/futur-api/src/main/java/dev/tommyjs/futur/promise/AbstractPromise.java
@@ -504,11 +504,12 @@ public abstract class AbstractPromise implements Promise {
@Override
public @NotNull Promise orDefault(@NotNull ExceptionalFunction function) {
+ PromiseFactory factory = getFactory();
return useCompletion(() -> {
CompletablePromise 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 {
diff --git a/futur-api/src/test/java/dev/tommyjs/futur/PromiseTests.java b/futur-api/src/test/java/dev/tommyjs/futur/PromiseTests.java
index 8cbabbd..ce99c46 100644
--- a/futur-api/src/test/java/dev/tommyjs/futur/PromiseTests.java
+++ b/futur-api/src/test/java/dev/tommyjs/futur/PromiseTests.java
@@ -211,6 +211,18 @@ public final class PromiseTests {
assert res.get() == 10;
}
+ @Test
+ public void testOrDefaultFunctionCompleted() {
+ CompletablePromise promise = promises.unresolved();
+ promise.completeExceptionally(new IllegalStateException("Test"));
+ AtomicReference res = new AtomicReference<>();
+ promise.orDefault(e -> {
+ assert e instanceof IllegalStateException;
+ return 10;
+ }).thenPopulateReference(res);
+ assert res.get() == 10;
+ }
+
@Test
public void testOrDefaultError() {
CompletablePromise promise = promises.unresolved();