code: def imap(requests, stream=False, size=2, exception_handler=None):
      
  
      pool = Pool(size)
  
      def send(r):
          return r.send(stream=stream)
  
      for request in pool.imap_unordered(send, requests):
          if request.response is not None:
              yield request.response
          elif exception_handler:
              ex_result = exception_handler(request, request.exception)
              if ex_result is not None:
                  yield ex_result
  
      pool.join()
docs: Concurrently converts a generator object of Requests to
      a generator of Responses.
  
      :param requests: a generator of Request objects.
      :param stream: If True, the content will not be downloaded immediately.
      :param size: Specifies the number of requests to make at a time. default is 2
      :param exception_handler: Callback function, called when exception occured. Params: Request, Exception