code: func (api *PublicDownloaderAPI) Syncing(ctx context.Context) (*rpc.Subscription, error) {
  	notifier, supported := rpc.NotifierFromContext(ctx)
  	if !supported {
  		return &rpc.Subscription{}, rpc.ErrNotificationsUnsupported
  	}
  
  	rpcSub := notifier.CreateSubscription()
  
  	go func() {
  		statuses := make(chan interface{})
  		sub := api.SubscribeSyncStatus(statuses)
  
  		for {
  			select {
  			case status := <-statuses:
  				notifier.Notify(rpcSub.ID, status)
  			case <-rpcSub.Err():
  				sub.Unsubscribe()
  				return
  			case <-notifier.Closed():
  				sub.Unsubscribe()
  				return
  			}
  		}
  	}()
  
  	return rpcSub, nil
  }
docs: // Syncing provides information when this nodes starts synchronising with the Ethereum network and when it's finished.