Skip to content

Commit d1f9bd7

Browse files
fixes #21: use setImmediate in _setTimeout when millis is zero
1 parent a9cb9e0 commit d1f9bd7

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

src/Control/Monad/Aff.purs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,15 @@ module Control.Monad.Aff
216216

217217
foreign import _setTimeout """
218218
function _setTimeout(nonCanceler, millis, aff) {
219+
var set = setTimeout, clear = clearTimeout;
220+
if (millis <= 0 && typeof setImmediate === "function") {
221+
set = setImmediate;
222+
clear = clearImmediate;
223+
}
219224
return function(success, error) {
220225
var canceler;
221226
222-
var timeout = setTimeout(function() {
227+
var timeout = set(function() {
223228
canceler = aff(success, error);
224229
}, millis);
225230
@@ -228,7 +233,7 @@ module Control.Monad.Aff
228233
if (canceler !== undefined) {
229234
return canceler(e)(s, f);
230235
} else {
231-
clearTimeout(timeout);
236+
clear(timeout);
232237
233238
try {
234239
s(true);

0 commit comments

Comments
 (0)