diff --git a/lib/zone.ts b/lib/zone.ts index 9cbd04fdc..f39cc4c2d 100644 --- a/lib/zone.ts +++ b/lib/zone.ts @@ -1272,7 +1272,13 @@ const Zone: ZoneType = (function(global: any) { } } if (nativeMicroTaskQueuePromise) { - nativeMicroTaskQueuePromise[symbolThen](drainMicroTaskQueue); + let nativeThen = nativeMicroTaskQueuePromise[symbolThen]; + if (!nativeThen) { + // native Promise is not patchable, we need to use `then` directly + // issue 1078 + nativeThen = nativeMicroTaskQueuePromise['then']; + } + nativeThen.call(nativeMicroTaskQueuePromise, drainMicroTaskQueue); } else { global[symbolSetTimeout](drainMicroTaskQueue, 0); }