rust: bssl-tls: Drop the async private key task

... as soon as it is resolved.

For `async` private key delegate users there is no observable effect,
but the destructor is unnecessarily delayed even when the task is
resolved to some result.

Signed-off-by: Xiangfei Ding <xfding@google.com>
Change-Id: Ia06e14cced35d66dac3892ecf37acc836a6a6964
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/101409
Reviewed-by: Adam Langley <agl@google.com>
Reviewed-by: Rudolf Polzer <rpolzer@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
diff --git a/rust/bssl-tls/src/credentials/methods.rs b/rust/bssl-tls/src/credentials/methods.rs
index f5a34da..909a05c 100644
--- a/rust/bssl-tls/src/credentials/methods.rs
+++ b/rust/bssl-tls/src/credentials/methods.rs
@@ -259,12 +259,14 @@
                     // Safety: `out_len` is a valid pointer by BoringSSL invariant.
                     *out_len = len;
                 }
+                task.take();
                 bssl_sys::ssl_private_key_result_t_ssl_private_key_success
             }
             PrivateKeyOperationResult::Pending => {
                 bssl_sys::ssl_private_key_result_t_ssl_private_key_retry
             }
             PrivateKeyOperationResult::Error => {
+                task.take();
                 bssl_sys::ssl_private_key_result_t_ssl_private_key_failure
             }
         }