code: def create_query_future(self, key):
          
          fut = asyncio.Future()
          fut.add_done_callback(
              functools.partial(self._erase_future, key)
          )
          self._lookup_cache[key] = fut
          return fut
docs: Create and return a :class:`asyncio.Future` for the given `hash_`
          function and `node` URL. The future is referenced internally and used
          by any calls to :meth:`lookup` which are made while the future is
          pending. The future is removed from the internal storage automatically
          when a result or exception is set for it.
  
          This allows for deduplication of queries for the same hash.