feat: close ImapStream after an error #122
                
     Merged
            
            
          
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
This prevents calls to poll_next()
from reaching the underlying stream
after an error is returned once.
Previously calls to poll_next()
to ImapStream built on top
of a network connection
could have returned infinite
stream of Some(Err(_))
values.
This is dangerous
for the code that looks for the end
of stream without processing
errors such as
while stream.next().await.is_some() {}because it may result in
infinite loop.
It is still better to process
errors by writing
while stream.try_next().await?.is_some() {},but the change protects
in case of incorrect library user code.