_parseKmsKmip(config) {
        this.kmip = {
            client: {
                /** Enable this option if the KMIP Server supports
                 * Create and Activate in one operation.
                 * Leave it disabled to prevent clock desynchronisation
                 * issues because the two steps creation uses server's
                 * time for `now' instead of client specified activation date
                 * which also targets the present instant.
                 */
                compoundCreateActivate:
                (process.env.S3KMIP_COMPOUND_CREATE === 'true') || false,
                /** Set the bucket name attribute name here if the KMIP
                 * server supports storing custom attributes along
                 * with the keys.
                 */
                bucketNameAttributeName:
                process.env.S3KMIP_BUCKET_ATTRIBUTE_NAME || '',
            },
            transport: this._parseKmipTransport({}),
            retries: 0,
        };
        if (config.kmip) {
            assert(config.kmip.providerName, 'config.kmip.providerName must be defined');
            assert(isValidProvider(config.kmip.providerName),
                'config.kmip.providerName must be lowercase alphanumeric only');
            this.kmip.providerName = config.kmip.providerName;
            if (config.kmip.client) {
                if (config.kmip.client.compoundCreateActivate) {
                    assert(typeof config.kmip.client.compoundCreateActivate ===
                          'boolean');
                    this.kmip.client.compoundCreateActivate =
                        config.kmip.client.compoundCreateActivate;
                }
                if (config.kmip.client.bucketNameAttributeName) {
                    assert(typeof config.kmip.client.bucketNameAttributeName ===
                          'string');
                    this.kmip.client.bucketNameAttributeName =
                        config.kmip.client.bucketNameAttributeName;
                }
            }
            if (config.kmip.transport) {
                if (Array.isArray(config.kmip.transport)) {
                    this.kmip.transport = config.kmip.transport.map(t =>
                        this._parseKmipTransport(t));
                    if (config.kmip.retries) {
                        assert(typeof config.kmip.retries === 'number',
                            'bad config: KMIP Cluster retries must be a number');
                        assert(config.kmip.retries <= this.kmip.transport.length - 1,
                            'bad config: KMIP Cluster retries must be lower or equal to the number of hosts - 1');
                    } else {
                        this.kmip.retries = this.kmip.transport.length - 1;
                    }
                } else {
                    this.kmip.transport =
                        this._parseKmipTransport(config.kmip.transport);
                }
            }
        }
    }
Specify the request pipeline depth here.
If for some reason the server sends the replies
out of order and confuses the client, a value of 1
should be a convenient workaround for a server side bug.
The default value of 8 is fine and there is almost no
benefit to tune this value for performance improvement.
Note: 0 is not an appropriate value and will fall back to 1.