diff --git a/lib/chore/queues/filesystem/publisher.rb b/lib/chore/queues/filesystem/publisher.rb
index <HASH>..<HASH> 100644
--- a/lib/chore/queues/filesystem/publisher.rb
+++ b/lib/chore/queues/filesystem/publisher.rb
@@ -25,12 +25,11 @@ module Chore
                 begin
                   f.write(job.to_json)
                 rescue StandardError => e
-                  Chore.logger.error "#{e.class.name}: #{e.message}. Could not write #{job[:class]} job to #{queue_name} file.\n#{e.stacktrace}"
-                  raise e
+                  Chore.logger.error "#{e.class.name}: #{e.message}. Could not write #{job[:class]} job to '#{queue_name}' queue file.\n#{e.backtrace}"
                 ensure
                   f.flock(File::LOCK_UN)
-                  break
                 end
+                break
               end
             end
           end
Remove ambiguous control-flow in error handling

The 'break' in the ensure block actually aborts the bubbling of errors
to higher level code. So even though we don't explicitly catch errors,
they are still swallowed.