public override async Task <UploadAvatarQueryResult> HandleRequest(UploadAvatarQuery request, CancellationToken cancellationToken = default) { string avatarUrl; // proceed avatar using (var imageFilter = new ImageFilter(request.AvatarFile)) { ImageFilter image = imageFilter .Resize(IMAGE_SIZE) .Crop(IMAGE_SIZE); string disposableWebP = image.CreateTempWebP(); avatarUrl = await fileLoader .UploadAsync(disposableWebP, ProjectDirectories.Avatars) .ConfigureAwait(false); } User user = Context.Users.Find(request.UserId); // delete old file string oldAvatar = user.AvatarPath; user.AvatarPath = avatarUrl; await Context.SaveChangesAsync(cancellationToken) .ConfigureAwait(false); await fileLoader.DeleteAsync(oldAvatar) .ConfigureAwait(false); return(new UploadAvatarQueryResult() { AvatarPath = avatarUrl }); }