library /*isNonNullableByDefault*/;
import self as self;
import "dart:async" as asy;
import "dart:core" as core;

import "dart:async";

static method throwSync() → asy::Future<void> {
  throw "";
}
static method allYield() → asy::Future<void> async {
  await 0;
  await self::allYield2();
}
static method allYield2() → asy::Future<void> async {
  await 0;
  await self::allYield3();
}
static method allYield3() → asy::Future<void> async {
  await 0;
  self::throwSync();
}
static method customErrorZone() → asy::Future<void> async {
  final asy::Completer<void> completer = asy::Completer::•<void>();
  asy::runZonedGuarded<asy::Future<Null>>(() → asy::Future<Null> async {
    await self::allYield();
    completer.{asy::Completer::complete}(null);
  }, (core::Object e, core::StackTrace s) → void {
    completer.{asy::Completer::completeError}(e, s);
  });
  return completer.{asy::Completer::future};
}
static method main() → dynamic {}
