@@ -0,0 +1,1541 @@
+package fault;%0A%0Aimport java.util.concurrent.ExecutionException;%0Aimport java.util.concurrent.Future;%0Aimport java.util.concurrent.TimeUnit;%0Aimport java.util.concurrent.TimeoutException;%0A%0A/**%0A * Created by timbrooks on 1/10/15.%0A */%0Apublic class ResilientFuture%3CT%3E implements Future %7B%0A%0A    private ResilientPromise%3CT%3E promise;%0A%0A    public ResilientFuture() %7B%0A        this(new MultipleWriterResilientPromise%3CT%3E());%0A%0A    %7D%0A%0A    public ResilientFuture(ResilientPromise%3CT%3E promise) %7B%0A        this.promise = promise;%0A    %7D%0A%0A    @Override%0A    public T get() throws InterruptedException, ExecutionException %7B%0A        promise.await();%0A        if (promise.isError()) %7B%0A            throw new ExecutionException(promise.getError());%0A        %7D%0A        return promise.getResult();%0A    %7D%0A%0A    @Override%0A    public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException %7B%0A        boolean await = promise.await(unit.convert(timeout, TimeUnit.MILLISECONDS));%0A        if (!await) %7B%0A            throw new TimeoutException();%0A        %7D%0A        if (promise.isError()) %7B%0A            throw new ExecutionException(promise.getError());%0A        %7D%0A        return promise.getResult();%0A    %7D%0A%0A    @Override%0A    public boolean isDone() %7B%0A        return promise.isDone();%0A    %7D%0A%0A    @Override%0A    public boolean cancel(boolean mayInterruptIfRunning) %7B%0A        throw new UnsupportedOperationException(%22Cancellation not supported at this time%22);%0A    %7D%0A%0A    @Override%0A    public boolean isCancelled() %7B%0A        return false;%0A    %7D%0A%7D%0A

Create a resilient future class that will be returned by the api