```swift func uploadData(key: String, data: Data) async throws { let options = StorageUploadDataRequest.Options(accessLevel: .protected) let uploadTask = Amplify.Storage.uploadData( key: key, data: data, options: options ) Task { for await progress in await uploadTask.progress { print("Progress: \(progress)") } } let data = try await uploadTask.value print("Completed: \(data)") } ``` ```swift var resultSink: AnyCancellable? var progressSink: AnyCancellable? func uploadData(key: String, data: Data) { let options = StorageUploadDataRequest.Options(accessLevel: .protected) let uploadTask = Amplify.Storage.uploadData( key: key, data: data, options: options ) progressSink = uploadTask .inProcessPublisher .sink { progress in print("Progress: \(progress)") } resultSink = uploadTask .resultPublisher .sink { if case let .failure(storageError) = $0 { print("Failed: \(storageError.errorDescription). \(storageError.recoverySuggestion)") } } receiveValue: { data in print("Completed: \(data)") } } ```