title: Unable to stop try_for_each_concurrent for mongodb client
body: <p>I'm trying to create a GRPC endpoint that streams results from Cursor. To achieve this I'm using <code>.map_ok</code> and <code>try_for_each_concurent</code> methods. I'm using the <em>try</em> version of for each because I would like to stop the loop if any error occurs.</p>
  <p>I'm experiencing an issue with trying to stop try_for_each_concurrent because is expecting me to return <code>mongodb::error::Error</code> and I'm unable to create it.</p>
  <p>How to create mongodb error?</p>
  <p>here is a snippet of code :-)</p>
  <pre class="lang-rust prettyprint-override"><code>let mongo_db_collection_stream = mongo_db_collection_stream.map_ok(|doc| {
      let parse_result: Result&lt;Asset, _&gt; = from_bson(Bson::Document(doc));
      parse_result
  });
  
  mongo_db_collection_stream.try_for_each_concurrent(None, |vs_or_err| {
      let mut tx_copy = tx.clone();
  
      tokio::spawn(async move {
          tx_copy.send(vs_or_err.clone()).await.unwrap();
      });
  
      async {
          match vs_or_err {
              Ok(v) =&gt; Ok(()),
              Err(v) =&gt; Err((v)),
          }
      }
  }).await;
  </code></pre>
  <p>output from console</p>
  <pre><code>error[E0271]: type mismatch resolving `&lt;impl futures::Future as futures::Future&gt;::Output == Result&lt;(), mongodb::error::Error&gt;`
     --&gt; file.rs:101:9
      |
  101 | /         mongo_db_collection_stream.try_for_each_concurrent(None, |vs_or_err| {
  102 | |             let mut tx_copy = tx.clone();
  103 | |
  104 | |             tokio::spawn(async move {
  ...   |
  113 | |             }
  114 | |         }).await;
      | |________________^ expected struct `mongodb::error::Error`, found enum `mongodb::bson::de::Error`
  
  </code></pre>
  <p>FYI looks like <code>mongodb::bson::de::Error</code> for not implement trait into <code>mongodb::error::Error</code></p>