step :: Manager -> Mgr ()
step mgr@Manager{..} = do
    delay <- runExpiredTimeouts mgr
    m <- liftIO $ FFI.getNextCompletion mgrIOCP (fromTimeout delay)
    case m of
        Nothing                      -> return ()
        Just (cb, numBytes, errCode) -> cb errCode numBytes
step :: Manager -> Mgr ()
step mgr@Manager{..} = do
    delay <- runExpiredTimeouts mgr
    m <- liftIO $ FFI.getNextCompletion mgrIOCP (fromTimeout delay)
    case m of
        Nothing                      -> return ()
        Just (cb, numBytes, errCode) -> cb errCode numBytes
step mgr@Manager{..} = do
    delay <- runExpiredTimeouts mgr
    m <- liftIO $ FFI.getNextCompletion mgrIOCP (fromTimeout delay)
    case m of
        Nothing                      -> return ()
        Just (cb, numBytes, errCode) -> cb errCode numBytes