docs: def get_connection(self, command_name, *keys, **options):
          "Get a connection from the pool"
          self._checkpid()
          try:
              connection = self._available_connections.pop()
          except IndexError:
              connection = self.make_connection()
          self._in_use_connections.add(connection)
          try:
              # ensure this connection is connected to Redis
              connection.connect()
              # connections that the pool provides should be ready to send
              # a command. if not, the connection was either returned to the
              # pool before all data has been read or the socket has been
              # closed. either way, reconnect and verify everything is good.
              if not connection.is_ready_for_command():
                  connection.disconnect()
                  connection.connect()
                  if not connection.is_ready_for_command():
                      raise ConnectionError('Connection not ready')
          except:  # noqa: E722
              # release the connection back to the pool so that we don't leak it
              self.release(connection)
              raise
  
          return connection