serverChunks ((chunk, i) : cs) = do
  upstream <- await
  case upstream of
    (Just bigBlock) -> do
      liftIO $ bigBlock `shouldBe` chunk
      liftIO $ debugM logger $ "server received big chunk succesfully " P.++ (show i)
      DC.yield chunk
      serverChunks cs 
    Nothing -> (liftIO $ debugM logger "terminated from upstream") >> return ()
serverChunks ((chunk, i) : cs) = do
  upstream <- await
  case upstream of
    (Just bigBlock) -> do
      liftIO $ bigBlock `shouldBe` chunk
      liftIO $ debugM logger $ "server received big chunk succesfully " P.++ (show i)
      DC.yield chunk
      serverChunks cs 
    Nothing -> (liftIO $ debugM logger "terminated from upstream") >> return ()
serverChunks ((chunk, i) : cs) = do
  upstream <- await
  case upstream of
    (Just bigBlock) -> do
      liftIO $ bigBlock `shouldBe` chunk
      liftIO $ debugM logger $ "server received big chunk succesfully " P.++ (show i)
      DC.yield chunk
      serverChunks cs 
    Nothing -> (liftIO $ debugM logger "terminated from upstream") >> return ()