code: private void doListRemove(final Message<JsonObject> message) {
      final String name = message.body().getString("name");
      if (name == null) {
        message.reply(new JsonObject().putString("status", "error").putString("message", "No name specified."));
        return;
      }
  
      if (message.body().containsField("index")) {
        final int index = message.body().getInteger("index");
  
        context.execute(new Action<Object>() {
          @Override
          public Object perform() {
            return data.getList(formatKey(name)).remove(index);
          }
        }, new Handler<AsyncResult<Object>>() {
          @Override
          public void handle(AsyncResult<Object> result) {
            if (result.failed()) {
              message.reply(new JsonObject().putString("status", "error").putString("message", result.cause().getMessage()));
            } else {
              message.reply(new JsonObject().putString("status", "ok").putValue("result", result.result()));
            }
          }
        });
      } else {
        final Object value = message.body().getValue("value");
        if (value == null) {
          message.reply(new JsonObject().putString("status", "error").putString("message", "No value specified."));
        } else {
          context.execute(new Action<Boolean>() {
            @Override
            public Boolean perform() {
              return data.getList(formatKey(name)).remove(value);
            }
          }, new Handler<AsyncResult<Boolean>>() {
            @Override
            public void handle(AsyncResult<Boolean> result) {
              if (result.failed()) {
                message.reply(new JsonObject().putString("status", "error").putString("message", result.cause().getMessage()));
              } else {
                message.reply(new JsonObject().putString("status", "ok").putBoolean("result", result.result()));
              }
            }
          });
        }
      }
    }
docs: Handles a list removal.