diff --git a/s3/src/bucket.rs b/s3/src/bucket.rs index bed16bf4b1..5732016d42 100644 --- a/s3/src/bucket.rs +++ b/s3/src/bucket.rs @@ -438,7 +438,15 @@ impl Bucket { credentials: Credentials, ) -> Result { let dummy_bucket = Bucket::new("", region, credentials)?.with_path_style(); - let request = RequestImpl::new(&dummy_bucket, "", Command::ListBuckets).await?; + dummy_bucket.list_buckets_().await + } + + /// Internally accessible non-static implementation of list_buckets + #[maybe_async::maybe_async] + async fn list_buckets_( + &self + ) -> Result { + let request = RequestImpl::new(self, "", Command::ListBuckets).await?; let response = request.response_data(false).await?; Ok(quick_xml::de::from_str::< @@ -479,9 +487,10 @@ impl Bucket { /// ``` #[maybe_async::maybe_async] pub async fn exists(&self) -> Result { - let credentials = self.credentials().await?; + let mut dummy_bucket = self.clone(); + dummy_bucket.name = "".into(); - let response = Self::list_buckets(self.region.clone(), credentials).await?; + let response = dummy_bucket.list_buckets_().await?; Ok(response .bucket_names()