diff --git a/src/pharos.rs b/src/pharos.rs index caa1fbc..ed8c911 100644 --- a/src/pharos.rs +++ b/src/pharos.rs @@ -255,19 +255,26 @@ impl Sink for Pharos where Event: Clone + 'static + Send } + let mut pending = false; + + let this = self.get_mut(); for (i, opt) in this.observers.iter_mut().enumerate() { if let Some( ref mut obs ) = opt { - let res = ready!( Pin::new( obs ).poll_flush( cx ) ); - - if res.is_err() + match Pin::new( obs ).poll_flush( cx ) { - this.free_slots.push( i ); + Poll::Pending => pending = true , + Poll::Ready(Ok()) => continue , - *opt = None; + Poll::Ready(Err(_)) => + { + this.free_slots.push( i ); + + *opt = None; + } } } }