code: public ListenableFuture<Boolean> saveAsync(@NotNull V entity) {
          Timer saveAsyncTimer = METRICS.getTimer(MetricsType.DATA_PROVIDER_SAVE.name());
  
          Insert insert = QueryBuilder.insertInto(getEntityMetadata().getTableName());
  
          List<ColumnMetadata> columns = getEntityMetadata().getFieldMetaData();
  
          columns.forEach(column -> insert.value(column.getName(), QueryBuilder.bindMarker()));
  
          ListenableFuture<Boolean> resultFuture;
  
          try {
              PreparedStatement prepare = getCassandraClient().prepare(getEntityMetadata().getKeyspace(), insert.getQueryString());
              prepare.setConsistencyLevel(getWriteConsistencyLevel());
  
              BoundStatement boundStatement = createBoundStatement(prepare, entity, columns);
  
              ResultSetFuture input = getCassandraClient().executeAsync(boundStatement);
              resultFuture = Futures.transform(input, ResultSet::wasApplied, getExecutorService());
          } catch (SyntaxError e) {
              LOGGER.warn("Can't prepare query: " + insert.getQueryString(), e);
  
              resultFuture = Futures.immediateFailedFuture(e);
          }
  
          monitorFuture(saveAsyncTimer, resultFuture);
  
          return resultFuture;
      }
docs: Save entity asynchronously
  
  @param entity Target entity
  
  @return Operation status result