executeOnce :: IORef (IO ()) -> IO ()
executeOnce ioref = do
  join $ atomicModifyIORef' ioref (\io -> (return (), io))
executeOnce :: IORef (IO ()) -> IO ()
executeOnce ioref = do
  join $ atomicModifyIORef' ioref (\io -> (return (), io))
executeOnce ioref = do
  join $ atomicModifyIORef' ioref (\io -> (return (), io))