Add AsyncInvoker::Clear method to allow canceling pending invocations

Change-Id: I85707c0980cdfb64acbb61ff8b6245e8da509db8
Bug: webrtc:8823
Reviewed-on: https://webrtc-review.googlesource.com/46801
Commit-Queue: Chris Dziemborowicz <chrisdz@google.com>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21835}
diff --git a/rtc_base/asyncinvoker.h b/rtc_base/asyncinvoker.h
index 3f0c4f1..523e9a9 100644
--- a/rtc_base/asyncinvoker.h
+++ b/rtc_base/asyncinvoker.h
@@ -124,6 +124,11 @@
   // behavior is desired, call Flush() before destroying this object.
   void Flush(Thread* thread, uint32_t id = MQID_ANY);
 
+  // Cancels any outstanding calls we own that are pending on any thread, and
+  // which have not yet started to execute. This does not wait for any calls
+  // that have already started executing to complete.
+  void Clear();
+
  private:
   void OnMessage(Message* msg) override;
   void DoInvoke(const Location& posted_from,