public void addListener()

in src/main/java/com/twitter/whiskey/futures/CompletableFuture.java [157:196]


    public void addListener(final Listener<T> listener) {

        boolean notify = false;
        if (!done) {
            synchronized (this) {
                if (!done) {
                    listeners.add(listener);
                } else {
                    notify = true;
                }
            }
        } else {
            notify = true;
        }

        if (notify) {
            if (result != null) {
                listener.getExecutor().execute(new Runnable() {
                    @Override
                    public void run() {
                        listener.onComplete(result);
                    }
                });
            } else if (error != null) {
                listener.getExecutor().execute(new Runnable() {
                    @Override
                    public void run() {
                        listener.onError(error);
                    }
                });
            } else {
                listener.getExecutor().execute(new Runnable() {
                    @Override
                    public void run() {
                        listener.onError(new CancellationException());
                    }
                });
            }
        }
    }