docs: def request(self, message, timeout=False, *args, **kwargs):
          """Populate connection pool, send message, return BytesIO, and cleanup"""
          if not self.connection_pool.full():
              self.connection_pool.put(self._register_socket())
  
          _socket = self.connection_pool.get()
  
          # setting timeout to None enables the socket to block.
          if timeout or timeout is None:
              _socket.settimeout(timeout)
  
          data = self.send_and_receive(_socket, message, *args, **kwargs)
  
          if self.connection.proto in Socket.streams:
              _socket.shutdown(socket.SHUT_RDWR)
  
          return Response(data, None, None)