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