1. A method of incrementally processing a plurality of arbitrary sized digital documents comprising: receiving a plurality of arbitrary sized digital documents, each digital document including one or more elements; and creating one or more threads to asynchronously process the plurality of digital documents, each of the threads: initializing one or more buffers to an expected size of the one or more elements; completing an I/O operation with the one or more elements and the one or more buffers; invoking one or more callback functions upon completion of the I/O operation; wherein each of the threads asynchronously processes the plurality of digital documents without blocking any of the one or more threads.