diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,9 @@
 
+Version 6.1
+-----
+
+* Fixed the contAwait function.
+
 Version 6.0
 -----
 
diff --git a/Simulation/Aivika/Trans/Internal/Cont.hs b/Simulation/Aivika/Trans/Internal/Cont.hs
--- a/Simulation/Aivika/Trans/Internal/Cont.hs
+++ b/Simulation/Aivika/Trans/Internal/Cont.hs
@@ -763,7 +763,8 @@
                Nothing ->
                  error "The handler was lost: freezeCont."
                Just h ->
-                 do invokeEvent p $ disposeEvent h
+                 do invokeEvent p $ writeRef rh Nothing
+                    invokeEvent p $ disposeEvent h
                     c <- invokeEvent p $ readRef rc
                     case c of
                       Nothing -> return ()
@@ -801,7 +802,8 @@
                Nothing ->
                  error "The handler was lost: freezeContReentering."
                Just h ->
-                 do invokeEvent p $ disposeEvent h
+                 do invokeEvent p $ writeRef rh Nothing
+                    invokeEvent p $ disposeEvent h
                     c <- invokeEvent p $ readRef rc
                     case c of
                       Nothing -> return ()
@@ -870,7 +872,8 @@
                 Nothing ->
                   error "The handler was lost: sleepCont."
                 Just h ->
-                  do invokeEvent p $ disposeEvent h
+                  do invokeEvent p $ writeRef rh Nothing
+                     invokeEvent p $ disposeEvent h
                      case e of
                        ContCancellationInitiating ->
                          invokeEvent p $
@@ -923,26 +926,53 @@
 contAwait :: MonadDES m => Signal m a -> Cont m a
 {-# INLINABLE contAwait #-}
 contAwait signal =
-  Cont $ \c ->
+  Cont $ \c0 ->
   Event $ \p ->
   do let r = pointRun p
-     c <- invokeEvent p $ freezeCont c
-     rh <- invokeSimulation r $ newRef Nothing
-     h <- invokeEvent p $
-          handleSignal signal $ 
-          \a -> Event $ 
-                \p -> do x <- invokeEvent p $ readRef rh
-                         case x of
-                           Nothing ->
-                             error "The signal was lost: contAwait."
-                           Just x ->
-                             do invokeEvent p $ disposeEvent x
-                                c <- invokeEvent p $ unfreezeCont c
-                                case c of
-                                  Nothing -> return ()
-                                  Just c  ->
-                                    invokeEvent p $ reenterCont c a
-     invokeEvent p $ writeRef rh $ Just h          
+     c <- invokeEvent p $ freezeCont c0
+     r1 <- invokeSimulation r $ newRef Nothing
+     r2 <- invokeSimulation r $ newRef Nothing
+     h1 <- invokeEvent p $
+           handleSignal signal $ 
+           \a -> Event $ 
+                 \p -> do x1 <- invokeEvent p $ readRef r1
+                          x2 <- invokeEvent p $ readRef r2
+                          invokeEvent p $ writeRef r1 Nothing
+                          invokeEvent p $ writeRef r2 Nothing
+                          case x1 of
+                            Nothing ->
+                              return ()
+                            Just h1 ->
+                              invokeEvent p $ disposeEvent h1
+                          case x2 of
+                            Nothing ->
+                              return ()
+                            Just h2 ->
+                              invokeEvent p $ disposeEvent h2
+                          c <- invokeEvent p $ unfreezeCont c
+                          case c of
+                            Nothing -> return ()
+                            Just c  ->
+                              invokeEvent p $ reenterCont c a
+     h2 <- invokeEvent p $
+           handleSignal (contCancellationInitiating $ contId $ contAux c0) $
+           \a -> Event $
+                 \p -> do x1 <- invokeEvent p $ readRef r1
+                          x2 <- invokeEvent p $ readRef r2
+                          invokeEvent p $ writeRef r1 Nothing
+                          invokeEvent p $ writeRef r2 Nothing
+                          case x1 of
+                            Nothing ->
+                              return ()
+                            Just h1 ->
+                              invokeEvent p $ disposeEvent h1
+                          case x2 of
+                            Nothing ->
+                              return ()
+                            Just h2 ->
+                              invokeEvent p $ disposeEvent h2
+     invokeEvent p $ writeRef r1 $ Just h1          
+     invokeEvent p $ writeRef r2 $ Just h2
 
 -- | Like the GoTo statement it transfers the direction of computation,
 -- but raises an exception when used within 'catchCont' or 'finallyCont'.
diff --git a/aivika-transformers.cabal b/aivika-transformers.cabal
--- a/aivika-transformers.cabal
+++ b/aivika-transformers.cabal
@@ -1,5 +1,5 @@
 name:            aivika-transformers
-version:         6.0.0
+version:         6.1
 synopsis:        Transformers for the Aivika simulation library
 description:
     This package is a generalization of the aivika [1] simulation library
