public async Task <Result <Contracts.Image, Contracts.Error> > UploadAsync(string galleryName, byte[] data, byte[] meta) { var result = await Name.FromString(galleryName) .AndThenAsync(name => _uploadService.UploadAsync(name, data, meta?.Length > 0 ? Option.Some(meta) : Option.None())); return(result.Map(ToContract, ErrorExtensions.ToContract)); }