src/main/java/com/googlecode/objectify/cache/TriggerFuture.java
@Override
	public boolean isDone() {
		boolean done = this.raw.isDone();
		
		if (!triggered && done) {
			this.triggered = true;
			PendingFutures.removePending(this);
			
			this.trigger();
		}

		return done;
	}
@Override
	public boolean isDone() {
		boolean done = this.raw.isDone();
		
		if (!triggered && done) {
			this.triggered = true;
			PendingFutures.removePending(this);
			
			this.trigger();
		}

		return done;
	}
This version also checks to see if we are done and we still need to call the trigger.
If so, it calls it.

@see java.util.concurrent.Future#isDone()