Currently, Disq erases from disk (see WorkerRunnable) the next task that will be processed before it is delegated to the Processor. At this point, the task only exists in memory, which can lead to data loss in catastrophic error situations.
This issue proposes the creation of a new option that would allow this behavior to be changed. For that, Disq will have to be modified to use blockingPeek (a function that in turn must be created at SerializerPoll.Slot and InternalQueue) and to erase the task after processing.