We do exactly what you said. For each batch, we keep processing unprocessed keys until there is no unprocessed keys returned.

The code is here: https://github.com/Obvious/dynamite/blob/master/lib/BatchGetItemBuilder.js#L151

What the test fires a request with 100 keys, DynamoDB Local returns 16 records, which is expected as each record is close to 64KB, but only 83 unprocessed keys, which should be 84.