docs: def solveAsync(self, callback):
          """
          Solve the current model asynchronously.
  
          Args:
            callback: Callback to be executed when the solver is done.
          """
          def async_call():
              self._lock.acquire()
              try:
                  self._impl.solve()
              except Exception:
                  self._lock.release()
                  raise
              else:
                  self._lock.release()
                  callback.run()
          Thread(target=async_call).start()