// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/**
 * Support for asynchronous programming,
 * with classes such as Future and Stream.
 *
 * For an introduction to using dart:async, see the
 * [dart:async section of the language tour]
 * (https://www.dartlang.org/docs/dart-up-and-running/contents/ch03.html#ch03-asynchronous-programming).
 * Also see
 * [articles](https://www.dartlang.org/articles/)
 * such as
 * [Using Future Based APIs]
 * (https://www.dartlang.org/articles/using-future-based-apis/).
 */
library dart.async;

import "dart:collection";

part 'async_error.dart';
part 'broadcast_stream_controller.dart';
part 'deferred_load.dart';
part 'event_loop.dart';
part 'future.dart';
part 'future_impl.dart';
part 'stream.dart';
part 'stream_controller.dart';
part 'stream_impl.dart';
part 'stream_pipe.dart';
part 'timer.dart';
part 'zone.dart';
