TimeoutSignal constructor

TimeoutSignal(
  1. Duration timeout, {
  2. AbortSignal? parent,
  3. Object? reason,
})

Implementation

TimeoutSignal(Duration timeout, {AbortSignal? parent, Object? reason}) {
  final deadline = DateTime.now().add(timeout);
  _deadline = switch (parent?.deadline) {
    final pDeadline? when pDeadline.isBefore(deadline) => pDeadline,
    _ => deadline,
  };
  final future = Future.delayed(
    timeout,
    () => super.errorFromReason(
      reason,
      Code.deadlineExceeded,
      'operation timed out',
    ),
  );
  _future = parent == null ? future : Future.any([parent.future, future]);
}