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_timer(timeout)
17 promise = EMPromise.new
18 EM.add_timer(timeout) do
19 promise.fulfill(nil)
20 end
21 promise
22 end
23end