package com.baeldung.jdeffered; import org.jdeferred.Deferred; import org.jdeferred.DonePipe; import org.jdeferred.Promise; import org.jdeferred.impl.DeferredObject; class PipeDemo { public enum Result { SUCCESS, FAILURE }; private static Result status; static Result validate(int num) { Deferred d = new DeferredObject<>(); Promise p = d.promise(); p.then((DonePipe) result -> { if (result < 90) { return new DeferredObject().resolve(result); } else { return new DeferredObject().reject(new Exception("Unacceptable value")); } }).done(r -> status = Result.SUCCESS).fail(r -> status = Result.FAILURE); d.resolve(num); return status; } }