class_docstr: The analysis context holds the pieces needed to route analysis requests
docstr: Handle a cancel in the boundary thread.
  
  Take care of workers expecting replies.
docstr_tok: ["Handle","a","cancel","in","the","boundary","thread",".","Take","care","of","workers","expecting","replies","."]
code: def handle_cancel(self):
      """Handle a cancel in the boundary thread.
  
      Take care of workers expecting replies.
      """
      with self.lock:
          for req in list(self.reqs_pending):
              Communicable.reply(req, BoundaryExited())
          self.reqs_pending = set()
  
imports: from .communicable import Communicable
  from .communicable.reply.upstream_exit import BoundaryExited
label_desc: Use image node_id 5 for calling the AnalysisContext obj's underlying member method code with example usage: obj.handle_cancel() without return types