diff --git a/async/src/traits/consumer.rs b/async/src/traits/consumer.rs index 3680fcf..32591ec 100644 --- a/async/src/traits/consumer.rs +++ b/async/src/traits/consumer.rs @@ -248,12 +248,13 @@ impl FusedFuture for WaitOccupiedFuture<'_, A> { impl Future for WaitOccupiedFuture<'_, A> { type Output = (); - fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { + fn poll(mut self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll { let mut waker_registered = false; loop { assert!(!self.done); let closed = self.owner.is_closed(); if self.count <= self.owner.occupied_len() || closed { + self.done = true; break Poll::Ready(()); } if waker_registered {