docstr: Add a timeout for a send or recv Future
docstr_tok: ["Add","a","timeout","for","a","send","or","recv","Future"]
code: def _add_timeout(self, future, timeout):
      """Add a timeout for a send or recv Future"""
  
      def future_timeout():
          if future.done():
              # future already resolved, do nothing
              return
  
          # raise EAGAIN
          future.set_exception(_zmq.Again())
  
      self._call_later(timeout, future_timeout)
  
imports: from collections import namedtuple, deque
  from itertools import chain
  from zmq import EVENTS, POLLOUT, POLLIN
  import zmq
label_desc: Use image node_id 11 for calling the _AsyncSocket obj's underlying member method code with example usage: obj._add_timeout(future, timeout) without return types