We can't do this.  By setting the executor you are always disabling threaded delta computation.  Why does this fix the error?

Is the problem that we are doing writes from a delta thread in order to update the progress stream, and then later we try to write to the pipe from a different thread to write the pack?  If that is the problem than the correct fix is to modify PackWriter to ensure that the progress messages are written from the "main" thread rather than from one of the background delta threads.