em.rb
1# frozen_string_literal: true
2
3require "em_promise"
4
5module EM
6 def self.promise_defer(klass: EMPromise, &block)
7 promise = klass.new
8 EventMachine.defer(
9 block,
10 promise.method(:fulfill),
11 promise.method(:reject)
12 )
13 promise
14 end
15
16 def self.promise_fiber
17 promise = EMPromise.new
18 Fiber.new {
19 begin
20 promise.fulfill(yield)
21 rescue StandardError => e
22 promise.reject(e)
23 end
24 }.resume
25 promise
26 end
27end