Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision b982fb29a831236e23284cedba72f1217cf401a0)
+++ libcfa/src/concurrency/preemption.cfa	(revision 4b30e8ccaaf654cc01c74faafd80728628e173c5)
@@ -105,9 +105,13 @@
 
 		// Check if this is a kernel
-		if( node->kernel_alarm ) {
+		if( node->type == Kernel ) {
 			preempt( node->proc );
 		}
+		else if( node->type == User ) {
+			timeout( id, node->thrd );
+		}
 		else {
-			timeout( id, node->thrd );
+			bool unpark_thd = node->callback(*node);
+			if (unpark_thd) timeout( id, node->thrd );
 		}
 
