respondToWHOISUSER (SNumeric _ 318 [_,n,_]) = do
    tr <- consumeGlobal whoisTempReplies ((n==).fst)
    if null tr then whoisResponse n Nothing
    else mapM_ (\(n,u) -> whoisResponse n (Just u)) tr

-- | WHOWAS reply - like 'respondToNAMES', this handles both RPL_WHOWASUSER (314)
-- and RPL_ENDOFWHOWAS (369). Handle and . Unlike WHOIS, we're never going to get a
-- list of channels, so we don't need to store any intermediate callbacks.
respondToWHOISUSER (SNumeric _ 318 [_,n,_]) = do
    tr <- consumeGlobal whoisTempReplies ((n==).fst)
    if null tr then whoisResponse n Nothing
    else mapM_ (\(n,u) -> whoisResponse n (Just u)) tr

-- | WHOWAS reply - like 'respondToNAMES', this handles both RPL_WHOWASUSER (314)
-- and RPL_ENDOFWHOWAS (369). Handle and . Unlike WHOIS, we're never going to get a
-- list of channels, so we don't need to store any intermediate callbacks.
respondToWHOISUSER (SNumeric _ 318 [_,n,_]) = do
    tr <- consumeGlobal whoisTempReplies ((n==).fst)
    if null tr then whoisResponse n Nothing
    else mapM_ (\(n,u) -> whoisResponse n (Just u)) tr

-- | WHOWAS reply - like 'respondToNAMES', this handles both RPL_WHOWASUSER (314)
-- and RPL_ENDOFWHOWAS (369). Handle and . Unlike WHOIS, we're never going to get a
-- list of channels, so we don't need to store any intermediate callbacks.