takeMVar instead of readMVar