module Sass::Embedded::Observer

def id

def id
  @subscription.id
end

def initialize(channel)

def initialize(channel)
  @mutex = Mutex.new
  @condition_variable = ConditionVariable.new
  @error = nil
  @message = nil
  @subscription = channel.subscribe(self)
end

def receive_message

def receive_message
  @mutex.synchronize do
    @condition_variable.wait(@mutex) if @error.nil? && @message.nil?
  end
  raise @error unless @error.nil?
  @message
end

def send_message(*args)

def send_message(*args)
  @subscription.send_message(*args)
end

def update(error, message)

def update(error, message)
  @subscription.unsubscribe
  @mutex.synchronize do
    @error = error
    @message = message
    @condition_variable.broadcast
  end
end