function tryBulk()

in src/helpers.ts [901:958]


      function tryBulk (bulkBody: string[], callback: (err: Error | null, bulkBody: string[]) => void): void {
        if (shouldAbort) return callback(null, [])
        client.bulk(Object.assign({}, bulkOptions, { body: bulkBody }), reqOptions as TransportRequestOptionsWithMeta)
          .then(response => {
            const result = response.body
            const results = zipBulkResults(result.items, bulkBody)

            if (!result.errors) {
              stats.successful += result.items.length
              for (const item of results) {
                const { result, document = noop } = item
                if (result.update?.result === 'noop') {
                  stats.noop++
                }
                if (onSuccess != null) onSuccess({ result, document: document() })
              }
              return callback(null, [])
            }
            const retry = []
            for (const item of results) {
              const { result, raw, document = noop } = item
              const operation = Object.keys(result)[0]
              // @ts-expect-error
              const responseItem = result[operation as keyof T.BulkResponseItemContainer]
              assert(responseItem !== undefined, 'The responseItem is undefined, please file a bug report')

              if (responseItem.status >= 400) {
                // 429 is the only status code where we might want to retry
                // a document, because it was not an error in the document itself,
                // but the ES node was handling too many operations.
                if (responseItem.status === 429) {
                  retry.push(raw.action)
                  /* istanbul ignore next */
                  if (operation !== 'delete') {
                    retry.push(raw.document ?? '')
                  }
                } else {
                  onDrop({
                    status: responseItem.status,
                    error: responseItem.error ?? null,
                    operation: serializer.deserialize(raw.action),
                    // @ts-expect-error
                    document: document(),
                    retried: isRetrying
                  })
                  stats.failed += 1
                }
              } else {
                stats.successful += 1
                if (onSuccess != null) onSuccess({ result, document: document() })
              }
            }
            callback(null, retry)
          })
          .catch(err => {
            callback(err, [])
          })
      }