anchor.diff:    }
   
     Future<PackageVersion> _performTarballUpload(
  -      String userEmail,
  +      AuthenticatedUser user,
         String filename,
         Future tarballUpload(String name, String version)) async {
       _logger.info('Examining tarball content.');
   
       // Parse metadata from the tarball.
  -    final validatedUpload =
  -        await _parseAndValidateUpload(db, filename, userEmail);
  +    final validatedUpload = await _parseAndValidateUpload(db, filename, user);
       final newVersion = validatedUpload.packageVersion;
   
       models.Package package;
  
positive.code: ///   * reads readme, changelog and pubspec files
  ///   * creates a [models.PackageVersion] and populates it with all metadata
  Future<_ValidatedUpload> _parseAndValidateUpload(
      DatastoreDB db, String filename, String user) async {
    assert(user != null);
  
    final files = await listTarball(filename);
  
negative.code:   @override
    Future<PackageVersion> finishAsyncUpload(Uri uri) {
      return withAuthenticatedUser((AuthenticatedUser user) async {
        final guid = uri.queryParameters['upload_id'];
        _logger.info('Finishing async upload (uuid: $guid)');
        _logger.info('Reading tarball from cloud storage.');
  