diff --git a/x/ref/services/syncbase/server/watchable/transaction.go b/x/ref/services/syncbase/server/watchable/transaction.go
index f557ca7..304c4d6 100644
--- a/x/ref/services/syncbase/server/watchable/transaction.go
+++ b/x/ref/services/syncbase/server/watchable/transaction.go
@@ -75,7 +75,7 @@
 	tx.mu.Lock()
 	defer tx.mu.Unlock()
 	if tx.err != nil {
-		return &store.InvalidStream{tx.err}
+		return &store.InvalidStream{Error: tx.err}
 	}
 	var it store.Stream
 	if !tx.st.managesRange(start, limit) {
diff --git a/x/ref/services/syncbase/store/leveldb/db.go b/x/ref/services/syncbase/store/leveldb/db.go
index 4f1ba6c..028b1ad 100644
--- a/x/ref/services/syncbase/store/leveldb/db.go
+++ b/x/ref/services/syncbase/store/leveldb/db.go
@@ -125,7 +125,7 @@
 	d.mu.RLock()
 	defer d.mu.RUnlock()
 	if d.err != nil {
-		return &store.InvalidStream{d.err}
+		return &store.InvalidStream{Error: d.err}
 	}
 	return newStream(d, d.node, start, limit, d.readOptions)
 }
@@ -156,7 +156,7 @@
 	d.mu.RLock()
 	defer d.mu.RUnlock()
 	if d.err != nil {
-		return &store.InvalidTransaction{d.err}
+		return &store.InvalidTransaction{Error: d.err}
 	}
 	return newTransaction(d, d.node)
 }
diff --git a/x/ref/services/syncbase/store/leveldb/snapshot.go b/x/ref/services/syncbase/store/leveldb/snapshot.go
index a07be02..f845fa6 100644
--- a/x/ref/services/syncbase/store/leveldb/snapshot.go
+++ b/x/ref/services/syncbase/store/leveldb/snapshot.go
@@ -76,7 +76,7 @@
 	s.mu.RLock()
 	defer s.mu.RUnlock()
 	if s.err != nil {
-		return &store.InvalidStream{s.err}
+		return &store.InvalidStream{Error: s.err}
 	}
 	return newStream(s.d, s.node, start, limit, s.cOpts)
 }
diff --git a/x/ref/services/syncbase/store/leveldb/transaction.go b/x/ref/services/syncbase/store/leveldb/transaction.go
index 4f03650..b8093f6 100644
--- a/x/ref/services/syncbase/store/leveldb/transaction.go
+++ b/x/ref/services/syncbase/store/leveldb/transaction.go
@@ -114,7 +114,7 @@
 	tx.mu.Lock()
 	defer tx.mu.Unlock()
 	if tx.err != nil {
-		return &store.InvalidStream{tx.err}
+		return &store.InvalidStream{Error: tx.err}
 	}
 
 	tx.reads.Ranges = append(tx.reads.Ranges, store.ScanRange{
diff --git a/x/ref/services/syncbase/store/memstore/snapshot.go b/x/ref/services/syncbase/store/memstore/snapshot.go
index 128d127..7d0fff1 100644
--- a/x/ref/services/syncbase/store/memstore/snapshot.go
+++ b/x/ref/services/syncbase/store/memstore/snapshot.go
@@ -68,7 +68,7 @@
 	s.mu.Lock()
 	defer s.mu.Unlock()
 	if s.err != nil {
-		return &store.InvalidStream{s.err}
+		return &store.InvalidStream{Error: s.err}
 	}
 	return newStream(s, s.node, start, limit)
 }
diff --git a/x/ref/services/syncbase/store/memstore/store.go b/x/ref/services/syncbase/store/memstore/store.go
index f4ef644..e246fc4 100644
--- a/x/ref/services/syncbase/store/memstore/store.go
+++ b/x/ref/services/syncbase/store/memstore/store.go
@@ -65,7 +65,7 @@
 	st.mu.Lock()
 	defer st.mu.Unlock()
 	if st.err != nil {
-		return &store.InvalidStream{st.err}
+		return &store.InvalidStream{Error: st.err}
 	}
 	// TODO(sadovsky): Close snapshot once stream is closed or canceled.
 	return newSnapshot(st, st.node).Scan(start, limit)
@@ -90,7 +90,7 @@
 	st.mu.Lock()
 	defer st.mu.Unlock()
 	if st.err != nil {
-		return &store.InvalidTransaction{st.err}
+		return &store.InvalidTransaction{Error: st.err}
 	}
 	st.lastSeq++
 	return newTransaction(st, st.node, st.lastSeq)
diff --git a/x/ref/services/syncbase/store/memstore/transaction.go b/x/ref/services/syncbase/store/memstore/transaction.go
index a2ed326..5095a5f 100644
--- a/x/ref/services/syncbase/store/memstore/transaction.go
+++ b/x/ref/services/syncbase/store/memstore/transaction.go
@@ -90,7 +90,7 @@
 	tx.mu.Lock()
 	defer tx.mu.Unlock()
 	if err := tx.error(); err != nil {
-		return &store.InvalidStream{err}
+		return &store.InvalidStream{Error: err}
 	}
 
 	// Create an array of store.WriteOps as it is needed to merge
