content: {-# LANGUAGE CPP                 #-}
  {-# LANGUAGE DeriveDataTypeable  #-}
  {-# LANGUAGE DeriveFunctor       #-}
  {-# LANGUAGE DeriveGeneric       #-}
  {-# LANGUAGE GADTs               #-}
  {-# LANGUAGE LambdaCase          #-}
  {-# LANGUAGE RankNTypes          #-}
  {-# LANGUAGE ScopedTypeVariables #-}
  {-# LANGUAGE StandaloneDeriving  #-}
  -- | Unlifted "Control.Concurrent.Async".
  --
  -- @since 0.1.0.0
  module UnliftIO.Async
    (
      -- * Asynchronous actions
      Async,
      -- ** Spawning
      async, asyncBound, asyncOn, asyncWithUnmask, asyncOnWithUnmask,
  
      -- ** Spawning with automatic 'cancel'ation
      withAsync, withAsyncBound, withAsyncOn, withAsyncWithUnmask,
      withAsyncOnWithUnmask,
  
      -- ** Querying 'Async's
      wait, poll, waitCatch, cancel, uninterruptibleCancel, cancelWith,
      A.asyncThreadId,
  
      -- ** STM operations
      A.waitSTM, A.pollSTM, A.waitCatchSTM,
  
      -- ** Waiting for multiple 'Async's
      waitAny, waitAnyCatch, waitAnyCancel, waitAnyCatchCancel,
      waitEither, waitEitherCatch, waitEitherCancel, waitEitherCatchCancel,
      waitEither_,
      waitBoth,
  
      -- ** Waiting for multiple 'Async's in STM
      A.waitAnySTM, A.waitAnyCatchSTM,
      A.waitEitherSTM, A.waitEitherCatchSTM,
      A.waitEitherSTM_,
      A.waitBothSTM,
  
      -- ** Linking
      link, link2,
  
      -- ** Pooled concurrency
      pooledMapConcurrentlyN,
      pooledMapConcurrently,
      pooledMapConcurrentlyN_,
      pooledMapConcurrently_,
      pooledForConcurrentlyN,
      pooledForConcurrently,
      pooledForConcurrentlyN_,
      pooledForConcurrently_,
      pooledReplicateConcurrentlyN,
      pooledReplicateConcurrently,
      pooledReplicateConcurrentlyN_,
      pooledReplicateConcurrently_,
  
      -- * Convenient utilities
      race, race_,
      concurrently, concurrently_,
      mapConcurrently, forConcurrently,
      mapConcurrently_, forConcurrently_,
      replicateConcurrently, replicateConcurrently_,
      Concurrently (..),
  
  #if MIN_VERSION_base(4,8,0)
      Conc, conc, runConc,
      ConcException (..),
  #endif
  
      -- * Re-exports
  #if MIN_VERSION_async(2,2,0)
      A.AsyncCancelled (..),
  #endif
    ) where
  
  import           Control.Concurrent.Async (Async)
  import qualified Control.Concurrent.Async as A
  import UnliftIO.Internals.Async
  