boolean () { myStatus = Status.STARTED; try { myAction.run(); complete(null); // complete manually before calling callback } catch (Throwable throwable) { myStatus = Status.EXECUTED; completeExceptionally(throwable); } finally { myStatus = Status.EXECUTED; if (myOnDoneCallback != null) { myOnDoneCallback.accept(this); } } return true; }