AsyncStream while application is in the background

Hello all,

In my quest to learn async/await I've tried to adapt an old delegate-based API to an async await one. It is an old network library which reads large blobs of data from a remote server.

I wrap my delegate around a proxy which uses an asyncstream at its heart. Like so:

public final class MyDelegateProxy: URLSessionTaskDelegate {
   var updater: AsyncStream<MyObject>
   private var internalUpdater = AnUpdate -> = {_ in () }

   func setupUpdater() {
       updater = AsyncStream<MyObject>  { cont in
       internalUpdater = { cont.yield($0)

   func aDelegateMethod() {
       //Do some processing and create a MyObject instance

I pass this delegate to my session which is a background URLSession.

I have a layer above this with business logic which does some processing before providing a nice update for my UI

public class MyBusinessThing {
  var updater: AsyncStream<AnUpdate>?
public final class MyBusinessWorker {

   func doSomeBusinessWork() -> MyBusinessThing {
       let aNewBusinessIdea = MyBusinessThing()
       aNewBusinessIdea.updater = AsyncStream<AnUpdate>.init {
             for await aDelegateUpdate in myDelegateProxy {
                      // Do some business logic
                     return anUpdate

The caller to this function holds on to the returned object, so all should be good there. When my app is in the foreground it works perfectly, however, when my app transitions to the background, all process are suspended and app is only woken up to receive session delegate callbacks. At this point I do not get any updates from the async streams.

My question is, how do these behave in the background? From reading the docs, I'd imagine they will collect updates until somebody asks for them, i.e. caching. So I'd expect once my app goes back in the foreground, I'd get all updates regardless. Am I missing something? Does one have to "resume" an async stream?