in aws-android-sdk-appsync-runtime/src/main/java/com/apollographql/apollo/internal/fetcher/CacheAndNetworkFetcher.java [110:137]
private synchronized void dispatch() {
if (disposed) {
return;
}
if (!dispatchedCacheResult) {
if (cacheResponse.isPresent()) {
originalCallback.onResponse(cacheResponse.get());
dispatchedCacheResult = true;
} else if (cacheException.isPresent()) {
dispatchedCacheResult = true;
}
}
// Only send the network result after the cache result has been dispatched
if (dispatchedCacheResult) {
if (networkResponse.isPresent()) {
originalCallback.onResponse(networkResponse.get());
originalCallback.onCompleted();
} else if (networkException.isPresent()) {
if (cacheException.isPresent()) {
// Both cache and network errored out
originalCallback.onFailure(networkException.get());
} else {
// Cache was successful. Just terminate.
originalCallback.onCompleted();
}
}
}
}