class Airbrake::Promise

@since v1.7.0
@see github.com/ruby-concurrency/concurrent-ruby/blob/master/lib/concurrent/promise.rb<br>@see developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise<br><br>promise is either resolved or rejected.
JavaScript), which allows chaining callbacks that are executed when the
Represents a simplified promise object (similar to promises found in
#

def initialize

def initialize
  @on_resolved = []
  @on_rejected = []
  @value = {}
  @mutex = Mutex.new
end

def reject(error)

Returns:
  • (self) -

Parameters:
  • error (String) --
def reject(error)
  @mutex.synchronize do
    @value['error'] = error
    @on_rejected.each { |callback| callback.call(error) }
  end
  self
end

def rescue(&block)

Returns:
  • (self) -

Other tags:
    Yieldparam: error -

Other tags:
    Yield: - The error message from the API
def rescue(&block)
  @mutex.synchronize do
    if @value.key?('error')
      yield(@value['error'])
      return self
    end
    @on_rejected << block
  end
  self
end

def resolve(response)

Returns:
  • (self) -

Parameters:
  • response (Hash) --
def resolve(response)
  @mutex.synchronize do
    @value = response
    @on_resolved.each { |callback| callback.call(response) }
  end
  self
end

def then(&block)

Returns:
  • (self) -

Other tags:
    Yieldparam: response - Contains the `id` & `url` keys

Other tags:
    Yield: -
def then(&block)
  @mutex.synchronize do
    if @value.key?('id')
      yield(@value)
      return self
    end
    @on_resolved << block
  end
  self
end