diff --git a/go/src/vanadium/discovery/internal/discovery.go b/go/src/vanadium/discovery/internal/discovery.go
index 59da5fa..0512875 100644
--- a/go/src/vanadium/discovery/internal/discovery.go
+++ b/go/src/vanadium/discovery/internal/discovery.go
@@ -7,13 +7,13 @@
 import (
 	"sync"
 
-	"v.io/v23/context"
-	"v.io/v23/discovery"
-	"v.io/v23/verror"
-
 	"mojo/public/go/bindings"
 	mojom "mojom/vanadium/discovery"
+
+	"v.io/v23/context"
+	"v.io/v23/discovery"
 	"v.io/v23/security"
+	"v.io/v23/verror"
 )
 
 type id uint32
@@ -73,14 +73,17 @@
 	for i, pattern := range patterns {
 		perms[i] = security.BlessingPattern(pattern)
 	}
-	err := d.s.Advertise(ctx, vService, perms)
+	done, err := d.s.Advertise(ctx, vService, perms)
 	if err != nil {
 		cancel()
 		return 0, v2mError(err), nil
 	}
 	d.mu.Lock()
 	currId := d.nextAdv
-	d.activeAdvs[currId] = cancel
+	d.activeAdvs[currId] = func() {
+		cancel()
+		<-done
+	}
 	d.nextAdv += 2
 	d.mu.Unlock()
 	return uint32(currId), nil, nil
@@ -88,11 +91,11 @@
 
 func (d *DiscoveryService) stopAdvertising(handle uint32) error {
 	d.mu.Lock()
-	cancel := d.activeAdvs[id(handle)]
+	stop := d.activeAdvs[id(handle)]
 	delete(d.activeAdvs, id(handle))
 	d.mu.Unlock()
-	if cancel != nil {
-		cancel()
+	if stop != nil {
+		stop()
 	}
 	return nil
 }
@@ -137,7 +140,7 @@
 
 // Stop stops the scan.
 func (d *DiscoveryService) Stop(handle uint32) error {
-	if handle % 2 == 0 {
+	if handle%2 == 0 {
 		return d.stopScan(handle)
 	}
 	return d.stopAdvertising(handle)
diff --git a/go/src/vanadium/discovery/internal/discovery_test.go b/go/src/vanadium/discovery/internal/discovery_test.go
index 585eb48..f2c9783 100644
--- a/go/src/vanadium/discovery/internal/discovery_test.go
+++ b/go/src/vanadium/discovery/internal/discovery_test.go
@@ -6,19 +6,20 @@
 
 import (
 	"reflect"
+	"sync"
 	"testing"
 
+	"third_party/go/tool/android_arm/src/fmt"
+
+	mojom "mojom/vanadium/discovery"
+
 	"v.io/v23/context"
 	"v.io/v23/discovery"
-	idiscovery "v.io/x/ref/lib/discovery"
-	vtest "v.io/x/ref/test"
-
-	_ "v.io/x/ref/runtime/factories/generic"
-
-	mojom "mojom/vanadium/discovery"
-	"sync"
-	"third_party/go/tool/android_arm/src/fmt"
 	"v.io/v23/security"
+
+	idiscovery "v.io/x/ref/lib/discovery"
+	_ "v.io/x/ref/runtime/factories/generic"
+	vtest "v.io/x/ref/test"
 )
 
 type mockAdv struct {
@@ -34,20 +35,23 @@
 	deleteCh chan struct{}
 }
 
-func (d *discoveryMock) Advertise(ctx *context.T, s discovery.Service, perms []security.BlessingPattern) error {
+func (d *discoveryMock) Advertise(ctx *context.T, s discovery.Service, perms []security.BlessingPattern) (<-chan struct{}, error) {
 	d.mu.Lock()
 	currId := d.id
 	d.services[currId] = s
 	d.id++
 	d.mu.Unlock()
-	c := func() {
+	done := make(chan struct{})
+	stop := func() {
 		d.mu.Lock()
 		delete(d.services, currId)
 		d.mu.Unlock()
-		d.deleteCh <- struct{}{}
+		close(done)
+
+		go func() { d.deleteCh <- struct{}{} }()
 	}
-	d.trigger.Add(c, ctx.Done())
-	return nil
+	d.trigger.Add(stop, ctx.Done())
+	return done, nil
 }
 
 func (*discoveryMock) Scan(ctx *context.T, query string) (<-chan discovery.Update, error) {
