Default strategy: processes each chunk one at a time on the calling thread. A failed extraction produces a null slot rather than propagating the exception.
open override fun <T> execute(chunks: List<<Error class: unknown class>>, extract: (<Error class: unknown class>) -> T): List<T?>
Apply extract to each chunk, returning results in INPUT ORDER. A null slot at index i means extract(chunks[i]) threw and was caught (see contract above).