anchor.diff:    }
   
     Future<List<DartdocEntry>> _listEntries(String prefix) async {
  -    final List<DartdocEntry> list = [];
  -    await for (final entry in _storage.list(prefix: prefix)) {
  -      if (entry.isDirectory) continue;
  -      if (!entry.name.endsWith('.json')) continue;
  -
  -      try {
  -        list.add(await DartdocEntry.fromStream(_storage.read(entry.name)));
  -      } catch (e, st) {
  -        if (e is DetailedApiRequestError && e.status == 404) {
  -          // ignore exception: entry was removed by another cleanup process during the listing
  -        } else {
  -          _logger.warning('Unable to read entry: ${entry.name}.', e, st);
  -        }
  -      }
  -    }
  -    return list;
  +    return retry(
  +      () async {
  +        final List<DartdocEntry> list = [];
  +        await for (final entry in _storage.list(prefix: prefix)) {
  +          if (entry.isDirectory) continue;
  +          if (!entry.name.endsWith('.json')) continue;
  +
  +          try {
  +            list.add(await DartdocEntry.fromStream(_storage.read(entry.name)));
  +          } catch (e, st) {
  +            if (e is DetailedApiRequestError && e.status == 404) {
  +              // ignore exception: entry was removed by another cleanup process during the listing
  +            } else {
  +              _logger.warning('Unable to read entry: ${entry.name}.', e, st);
  +            }
  +          }
  +        }
  +        return list;
  +      },
  +      maxAttempts: 2,
  +    );
     }
   
     Future _deleteAll(DartdocEntry entry) async {
  
positive.code:   /// Returns the file's header from the storage bucket
    Future<FileInfo> getFileInfo(DartdocEntry entry, String relativePath) async {
      final objectName = entry.objectName(relativePath);
      return cache.dartdocFileInfo(objectName).get(() async {
        try {
          final info = await _storage.info(objectName);
          return FileInfo(lastModified: info.updated, etag: info.etag);
        } catch (e) {
          // TODO: Handle exceptions / errors
          _logger.info('Requested path $objectName does not exists.');
          return null;
        }
      });
    }
  
    /// Returns a file's content from the storage bucket.
  
negative.code: import 'package:path/path.dart' as p;
  import 'package:pool/pool.dart';
  import 'package:pub_semver/pub_semver.dart';
  import 'package:retry/retry.dart';
  
  import 'package:pub_dartdoc_data/pub_dartdoc_data.dart';
  
  