code: def notify(self, value: Any) -> asyncio.Future:
          
          results = (s.emit(value, who=self) for s in self._subscriptions)
          futures = tuple(r for r in results if r is not None)
  
          if not futures:
              return None
  
          if len(futures) == 1:
              return futures[0]  # return the received single future
  
          return asyncio.gather(*futures)
docs: Calling .emit(value) on all subscribers. A synchronouse subscriber
          will just return None, a asynchronous one may returns a future. Futures
          will be collected. If no future was returned None will be returned by
          this method. If one futrue was returned that future will be returned.
          When multiple futures were returned a gathered future will be returned.
  
          :param value: value to be emitted to subscribers
          :returns: a future if at least one subscriber has returned a future,
              elsewise None