make retries and retryExceptions optional
use ParallelWorkQueue instead of Thread
this provides signalling.  No more `Thread.Sleep(100);`!