def raise(exception = nil)
      exception = case
      when exception == nil then StandardError.new
      when exception.is_a?(Exception) then exception
      when Exception >= exception then exception.new
      else
        Kernel.raise(TypeError, "'exception' must be nil or an instance of or descendant of Exception")
      end
      @mutex.synchronize do
        Kernel.raise(Complete) if @complete
        @complete = true
        @exception = exception
        @waiter.resume_all_indefinitely
      end
      nil
    end
def raise(exception = nil)
      exception = case
      when exception == nil then StandardError.new
      when exception.is_a?(Exception) then exception
      when Exception >= exception then exception.new
      else
        Kernel.raise(TypeError, "'exception' must be nil or an instance of or descendant of Exception")
      end
      @mutex.synchronize do
        Kernel.raise(Complete) if @complete
        @complete = true
        @exception = exception
        @waiter.resume_all_indefinitely
      end
      nil
    end
Sets it to an error.
 @raise [Complete] if the it has already completed
 @param exception [nil,Object] +Exception+ class or instance to set, otherwise a +StandardError+ will be set
 @return [void]