code: @Override
      public void put(String table, String key, Map<String, Object> doc,
              IPutCallback<Map<String, Object>> callback) {
          SessionManager sessionManager = getSessionManager();
          ConsistencyLevel consistencyLevel = getConsistencyLevelPut();
          String CQL = MessageFormat.format(CQL_INSERT, calcTableName(table));
          byte[] value = documentToBytes(doc);
          if (isAsyncPut()) {
              try {
                  sessionManager.executeAsync(new RetryFutureCallbackResultSet(sessionManager, 1000,
                          consistencyLevel, CQL, key, value) {
                      @Override
                      public void onSuccess(ResultSet result) {
                          if (callback != null) {
                              callback.onSuccess(table, key, doc);
                          }
                      }
  
                      @Override
                      protected void onError(Throwable t) {
                          if (callback != null) {
                              callback.onError(table, key, doc, t);
                          } else {
                              LOGGER.error(t.getMessage());
                          }
                      }
                  }, 1000, CQL, consistencyLevel, key, value);
              } catch (InterruptedException e) {
                  throw new RuntimeException(e);
              }
          } else {
              try {
                  sessionManager.execute(CQL, getConsistencyLevelPut(), key, value);
                  if (callback != null) {
                      callback.onSuccess(table, key, doc);
                  }
              } catch (Throwable t) {
                  if (callback != null) {
                      callback.onError(table, key, doc, t);
                  }
              }
          }
      }
docs: {@inheritDoc}