lock (Needle::QueryableMutex)

    # File lib/needle/thread.rb, line 35
        def lock
          if @locking_thread == Thread.current
            raise ThreadError,
              "an attempt was made to reacquire an existing lock " +
              "(this could happen if you have a circular dependency on a service)"
          end

          while (Thread.critical = true; @locked)
            @waiting.push Thread.current
            Thread.stop
          end
          @locked = true
          @locking_thread = Thread.current
          Thread.critical = false
          self
        end