awsIteratedSource :: (IteratedTransaction r a)
                     => Configuration
                     -> ServiceConfiguration r NormalQuery
                     -> HTTP.Manager
                     -> r
                     -> C.Producer (ResourceT IO) (Response (ResponseMetadata a) a)
awsIteratedSource cfg scfg manager req_ = go req_
  where go request = do resp <- lift $ aws cfg scfg manager request
                        C.yield resp
                        case responseResult resp of
                          Left _  -> return ()
                          Right x ->
                            case nextIteratedRequest request x of
                              Nothing -> return ()
                              Just nextRequest -> go nextRequest
awsIteratedSource :: (IteratedTransaction r a)
                     => Configuration
                     -> ServiceConfiguration r NormalQuery
                     -> HTTP.Manager
                     -> r
                     -> C.Producer (ResourceT IO) (Response (ResponseMetadata a) a)
awsIteratedSource cfg scfg manager req_ = go req_
  where go request = do resp <- lift $ aws cfg scfg manager request
                        C.yield resp
                        case responseResult resp of
                          Left _  -> return ()
                          Right x ->
                            case nextIteratedRequest request x of
                              Nothing -> return ()
                              Just nextRequest -> go nextRequest
awsIteratedSource cfg scfg manager req_ = go req_
  where go request = do resp <- lift $ aws cfg scfg manager request
                        C.yield resp
                        case responseResult resp of
                          Left _  -> return ()
                          Right x ->
                            case nextIteratedRequest request x of
                              Nothing -> return ()
                              Just nextRequest -> go nextRequest