Sha256: ea2442aea834b1990d9d869f8c0f247cbede73cd5bb671703d288816987b03cd

Contents?: true

Size: 379 Bytes

Versions: 7

Compression:

Stored size: 379 Bytes

Contents

class DelayedPromise < Promise
  BrokenPromise = Class.new(StandardError)

  class << self
    def deferred
      @deferred ||= []
    end

    def call_deferred
      deferred.shift.call until deferred.empty?
    end
  end

  def wait
    DelayedPromise.call_deferred
    raise BrokenPromise if pending?
  end

  def defer(&block)
    DelayedPromise.deferred << block
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
promise.rb-0.7.4 spec/support/delayed_promise.rb
promise.rb-0.7.3 spec/support/delayed_promise.rb
promise.rb-0.7.2 spec/support/delayed_promise.rb
promise.rb-0.7.1 spec/support/delayed_promise.rb
promise.rb-0.7.0 spec/support/delayed_promise.rb
promise.rb-0.7.0.rc2 spec/support/delayed_promise.rb
promise.rb-0.7.0.rc1 spec/support/delayed_promise.rb