@@ -452,7 +452,7 @@ void main() {
452452 });
453453 log ('onTurnDone(end)' );
454454 };
455- zone.defaultOnScheduleMicrotask = (microTaskFn) {
455+ zone.onScheduleMicrotask = (microTaskFn) {
456456 log ('onScheduleMicrotask(begin)' );
457457 microtaskResult = microTaskFn ();
458458 log ('onScheduleMicrotask(end)' );
@@ -478,7 +478,7 @@ void main() {
478478 });
479479 log ('onTurnDone(end)' );
480480 };
481- zone.defaultOnScheduleMicrotask = (microTaskFn) {
481+ zone.onScheduleMicrotask = (microTaskFn) {
482482 log ('onScheduleMicrotask(begin)' );
483483 microTaskFn ();
484484 log ('onScheduleMicrotask(end)' );
@@ -500,7 +500,7 @@ void main() {
500500 zone.onTurnDone = () {
501501 log ('onTurnDone' );
502502 };
503- zone.defaultOnScheduleMicrotask = (microTaskFn) {
503+ zone.onScheduleMicrotask = (microTaskFn) {
504504 log ('onScheduleMicrotask(begin)' );
505505 microTaskFn ();
506506 log ('onScheduleMicrotask(end)' );
@@ -528,7 +528,7 @@ void main() {
528528 zone.onTurnDone = () {
529529 log ('onTurnDone' );
530530 };
531- zone.defaultOnScheduleMicrotask = (microTaskFn) {
531+ zone.onScheduleMicrotask = (microTaskFn) {
532532 log ('onScheduleMicrotask(begin)' );
533533 microTaskFn ();
534534 log ('onScheduleMicrotask(end)' );
@@ -541,6 +541,36 @@ void main() {
541541 ' onScheduleMicrotask(end); run; onTurnDone' );
542542 }));
543543
544+ iit ('should execute microtask scheduled outside the turn' , (Logger log) {
545+ zone = new VmTurnZone ();
546+
547+ var taskToRun = null ;
548+
549+ zone.onTurnDone = () {
550+ if (taskToRun != null ) taskToRun ();
551+ taskToRun = null ;
552+ log ('onTurnDone' );
553+ };
554+
555+ zone.onScheduleMicrotask = (microTaskFn) {
556+ log ('onScheduleMicrotask' );
557+ taskToRun = microTaskFn;
558+ };
559+
560+ var completer;
561+ zone.run (() {
562+ completer = new Completer ();
563+ completer.future.then ((x) => log ('future' ));
564+ log ('first' );
565+ });
566+ completer.complete ();
567+
568+ expect (log).toEqual ([
569+ 'first' , 'onTurnDone' ,
570+ 'onScheduleMicrotask' , 'future' , 'onTurnDone'
571+ ]);
572+ });
573+
544574 });
545575 });
546576}
0 commit comments