class Sass::Embedded::Async

It awaits until the promise is resolved or rejected.
The {Async} class.

def await

def await
  @mutex.synchronize do
    @condition_variable.wait(@mutex) if @state == State::PENDING
    raise @error if @state == State::REJECTED
    @result
  end
end

def initialize

def initialize
  @error = nil
  @result = nil
  @state = State::PENDING
  @condition_variable = ConditionVariable.new
  @mutex = Mutex.new
  begin
    yield if block_given?
  rescue StandardError => e
    reject e
  end
end

def reject(reason)

def reject(reason)
  @mutex.synchronize do
    return unless @state == State::PENDING
    @state = State::REJECTED
    @error = reason
    @condition_variable.broadcast
  end
end

def resolve(value)

def resolve(value)
  @mutex.synchronize do
    return unless @state == State::PENDING
    @state = State::FULFILLED
    @result = value
    @condition_variable.broadcast
  end
end