Do we really need to introduce a new type for this instead of building the `AsyncResult` as done before? We could refactor the building of the `AsyncResult` in a helper function for readability, but we only use it here, so I don't really see the benefit of the new type that doesn't exist in the Java API.