Promise<VALUE> (HOST host, boolean load, Promise<VALUE> promise) { if (!load || promise.getState() != Promise.State.PENDING) { return promise; } Promise<VALUE> effectivePromise = load(host); if (effectivePromise != promise) { fieldUpdater.compareAndSet(host, promise, effectivePromise); effectivePromise.processed(promise); } return effectivePromise; }