code: def _timeout_future(self, tag, matcher, future):
          '''
          Timeout a specific future
          '''
          if (tag, matcher) not in self.tag_map:
              return
          if not future.done():
              future.set_exception(TimeoutException())
              self.tag_map[(tag, matcher)].remove(future)
          if not self.tag_map[(tag, matcher)]:
              del self.tag_map[(tag, matcher)f _timeout_future(self, tag, matcher, future):
          '''
          Timeout a specific future
          '''
          if (tag, matcher) not in self.tag_map:
              return
          if not future.done():
              future.set_exception(TimeoutException())
              self.tag_map[(tag, matcher)].remove(future)
          if not self.tag_map[(tag, matcher)]:
              del self.tag_map[(tag, matcher)]
docs: Timeout a specific future