diff --git a/emper/strategies/laws/LawsScheduler.cpp b/emper/strategies/laws/LawsScheduler.cpp
index 394e8c1a066220149b692787a77ca6869aeb7815..5e605992e19661985422745fcc0328bb058abaaa 100644
--- a/emper/strategies/laws/LawsScheduler.cpp
+++ b/emper/strategies/laws/LawsScheduler.cpp
@@ -3,6 +3,8 @@
 #include "Common.hpp"
 #include "Runtime.hpp"
 
+#define EMPER_OVERFLOW_QUEUE
+
 thread_local adt::MpscQueue<Fiber> priorityQueue;
 
 thread_local LawsScheduler::WsQueue<LawsScheduler::QUEUE_SIZE> LawsScheduler::queue;
@@ -34,7 +36,11 @@ void LawsScheduler::schedule(Fiber& fiber) {
 	}
 	bool pushed = queue.pushBottom(&fiber);
 	if (unlikely(!pushed)) {
-		abort();
+#ifdef EMPER_OVERFLOW_QUEUE
+		priorityQueue.enqueue(&fiber);
+#else
+		ABORT("Could not push fiber " << &fiber << " into queue");
+#endif
 	}
 }