code: 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
docs: 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]