diff --git a/cp_dir b/cp_dir
old mode 100644
new mode 100755
diff --git a/extra/concurrency/concurrency.factor b/extra/concurrency/concurrency.factor
index 32ae3e5940..14f74f5d55 100644
--- a/extra/concurrency/concurrency.factor
+++ b/extra/concurrency/concurrency.factor
@@ -286,13 +286,15 @@ TUPLE: promise fulfilled? value processes ;
 : fulfill ( value promise  -- )
     #! Set the future of the promise to the given value. Threads
     #! blocking on the promise will then be released.
-    dup promise-fulfilled? [
+    dup promise-fulfilled? [ 
+        2drop
+    ] [
         [ set-promise-value ] keep
         [ t swap set-promise-fulfilled? ] keep
         [ promise-processes ] keep
         0 <vector> swap set-promise-processes
         [ schedule-thread ] each yield
-    ] unless ;
+    ] if ;
 
 <PRIVATE
  : (maybe-block-promise) ( promise -- promise )