anchor.diff:      final version = map['version'] as String;
       final date = DateTime.parse(map['date'] as String);
       return _cached = DartSdkVersion(version, date);
  +  } catch (e, st) {
  +    _logger.warning('Unable to fetch the Dart SDK version', e, st);
  +    // If there exists a cached value, extend it.
  +    // If there is no cached value, use the runtime analysis SDK as the latest.
  +    return _cached = DartSdkVersion(
  +      _cached?.version ?? toolStableDartSdkVersion,
  +      _cached?.published ?? DateTime.now(),
  +      expires: DateTime.now().add(_failedFetchCacheDuration),
  +    );
     } finally {
       client.close();
     }
  
positive.code:   final String version;
    final Version semanticVersion;
    final DateTime published;
    final DateTime fetched;
  
    DartSdkVersion(this.version, this.published)
        : semanticVersion = Version.parse(version),
          fetched = DateTime.now();
  
    Duration get age => DateTime.now().difference(fetched);
  }
  
  /// Gets the latest Dart SDK version information (may be cached, but not older
  /// than [maxAge]).
  Future<DartSdkVersion> getDartSdkVersion(
      {Duration maxAge = const Duration(hours: 1)}) async {
    if (_cached != null && _cached.age < maxAge) return _cached;
    return _fetchDartSdkVersion();
  }
  
  
negative.code: 
  import 'dart:convert';
  
  import 'package:logging/logging.dart';
  import 'package:pub_semver/pub_semver.dart';
  
  import '../../shared/versions.dart';
  import 'http.dart' show httpRetryClient;
  
  final _logger = Logger('tool.sdk_version');
  
  /// The default cache timeout after the request is made to the storage server.
  const _defaultMaxAge = Duration(hours: 1);
  
  /// The cache timeout used in case the fetch encountered a failure.
  const _failedFetchCacheDuration = Duration(minutes: 5);
  
  /// The locally cached last fetch.
  DartSdkVersion _cached;
  