Tested with the later diff but things that touch this code in particular:
- tested that the promise resolved after successful upload
- tested that the promise rejected with a correct message after an error on the Rust side
- tested that the promise rejected with a correct message after an error on the C++ side
The testing code looks roughly like this:
```
if let Err(err) = rust_op_that_can_fail().await {
compaction_upload_promises::resolve(&backup_id, Err(err));
return;
}
let (future_id, future) = future_manager::new_future::<()>().await;
cpp_that_can_fail(future_id);
if let Err(err) = future.await {
compaction_upload_promises::resolve(&backup_id, Err(err));
return;
}
compaction_upload_promises::resolve(&backup_id, Ok(()));
```