Use WaitContext everywhere

Change-Id: If5ad56bd4b81ebb78c427428d9bd09db324ec0db
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/go/+/554802
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Reviewed-by: Bruno Dal Bo <brunodalbo@google.com>
Fuchsia-Auto-Submit: Tamir Duberstein <tamird@google.com>
diff --git a/src/internal/poll/fd_fuchsia.go b/src/internal/poll/fd_fuchsia.go
index 876c63d..b95c57b 100644
--- a/src/internal/poll/fd_fuchsia.go
+++ b/src/internal/poll/fd_fuchsia.go
@@ -4,11 +4,13 @@
 
 // `go mod` ignores file names for the purpose of resolving
 // dependencies, and zxsocket doesn't build on not-Fuchsia.
+//go:build fuchsia
 // +build fuchsia
 
 package poll
 
 import (
+	"context"
 	"io"
 	"sync/atomic"
 	"syscall"
@@ -229,7 +231,7 @@
 		}
 
 		// TODO: non-blocking support, pass this to the poller
-		obs, err := s.Wait(zxsocket.SignalStreamIncoming|zx.SignalSocketPeerClosed, zx.TimensecInfinite)
+		obs, err := s.Wait(context.Background(), zxsocket.SignalStreamIncoming|zx.SignalSocketPeerClosed)
 		if err != nil {
 			if err, ok := err.(*zx.Error); ok {
 				switch err.Status {
diff --git a/src/net/ipsock_fuchsia.go b/src/net/ipsock_fuchsia.go
index b88bd98..177b073 100644
--- a/src/net/ipsock_fuchsia.go
+++ b/src/net/ipsock_fuchsia.go
@@ -2,7 +2,10 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//+build fuchsia
+// `go mod` ignores file names for the purpose of resolving
+// dependencies, and zxsocket doesn't build on not-Fuchsia.
+//go:build fuchsia
+// +build fuchsia
 
 package net
 
@@ -166,7 +169,7 @@
 		for i := 0; i < 2; i++ {
 			err = fd.sock.Connect(addr)
 			if sock, ok := fd.sock.(*zxsocket.StreamSocket); ok && err == syscall.EINPROGRESS {
-				obs, err := sock.Wait(zxsocket.SignalStreamConnected|zx.SignalSocketPeerClosed, zx.TimensecInfinite)
+				obs, err := sock.Wait(context.Background(), zxsocket.SignalStreamConnected|zx.SignalSocketPeerClosed)
 				if err != nil {
 					return nil, err
 				}
diff --git a/src/os/exec_cgo_fuchsia.go b/src/os/exec_cgo_fuchsia.go
index 25cfc3c..6c73958 100644
--- a/src/os/exec_cgo_fuchsia.go
+++ b/src/os/exec_cgo_fuchsia.go
@@ -27,6 +27,7 @@
 import "C"
 
 import (
+	"context"
 	"errors"
 	"syscall"
 	"syscall/zx"
@@ -184,7 +185,7 @@
 
 func (p *Process) wait() (*ProcessState, error) {
 	procHandle := zx.Handle(p.handle)
-	if _, err := zxwait.Wait(procHandle, zx.SignalTaskTerminated, zx.TimensecInfinite); err != nil {
+	if _, err := zxwait.WaitContext(context.Background(), procHandle, zx.SignalTaskTerminated); err != nil {
 		return nil, err
 	}
 	procInfo := C.zx_info_process_t{}
diff --git a/src/syscall/zx/fdio/pipe.go b/src/syscall/zx/fdio/pipe.go
index 088f106..20b8744 100644
--- a/src/syscall/zx/fdio/pipe.go
+++ b/src/syscall/zx/fdio/pipe.go
@@ -4,12 +4,14 @@
 
 // Go's distribution tools attempt to compile everything; this file
 // depends on zxwait, which doesn't compile in not-Fuchsia.
+//go:build fuchsia
 // +build fuchsia
 
 package fdio
 
 import (
 	"syscall/zx"
+	"syscall/zx/internal/context"
 	"syscall/zx/io"
 	"syscall/zx/zxwait"
 )
@@ -30,8 +32,8 @@
 	return &Pipe{s}
 }
 
-func (f *Pipe) Wait(signals zx.Signals, timeout zx.Time) (observed zx.Signals, err error) {
-	return zxwait.Wait(zx.Handle(f.s), signals, timeout)
+func (f *Pipe) Wait(ctx context.Context, signals zx.Signals) (observed zx.Signals, err error) {
+	return zxwait.WaitContext(ctx, zx.Handle(f.s), signals)
 }
 
 func (f *Pipe) Handles() []zx.Handle {
@@ -75,7 +77,7 @@
 				case zx.ErrPeerClosed:
 					return 0, zx.EOF
 				case zx.ErrShouldWait:
-					pending, err := f.Wait(zx.SignalSocketReadable|zx.SignalSocketPeerClosed, zx.TimensecInfinite)
+					pending, err := f.Wait(context.Background(), zx.SignalSocketReadable|zx.SignalSocketPeerClosed)
 					if err != nil {
 						return 0, err
 					}
@@ -108,7 +110,7 @@
 				case zx.ErrPeerClosed:
 					return 0, zx.EPIPE
 				case zx.ErrShouldWait:
-					pending, err := f.Wait(zx.SignalSocketWritable|zx.SignalSocketPeerClosed, zx.TimensecInfinite)
+					pending, err := f.Wait(context.Background(), zx.SignalSocketWritable|zx.SignalSocketPeerClosed)
 					if err != nil {
 						return 0, err
 					}
diff --git a/src/syscall/zx/zxsocket/socket.go b/src/syscall/zx/zxsocket/socket.go
index cd6791f..1c53ea0 100644
--- a/src/syscall/zx/zxsocket/socket.go
+++ b/src/syscall/zx/zxsocket/socket.go
@@ -267,7 +267,7 @@
 		}
 		return nil
 	}()
-	_, err.channel.wait = zxwait.Wait(*channel.Handle(), zx.SignalChannelPeerClosed, zx.TimensecInfinite)
+	_, err.channel.wait = zxwait.WaitContext(context.Background(), *channel.Handle(), zx.SignalChannelPeerClosed)
 	err.channel.close = channel.Close()
 	err.handleClose = handle.Close()
 	if err.fidl == nil && err.channel.wait == nil && err.channel.close == nil && err.handleClose == nil {
@@ -326,7 +326,7 @@
 				return net.SocketAddress{}, nil, err
 			}
 
-			obs, err := zxwait.Wait(s.event, SignalDatagramIncoming|SignalDatagramShutdownRead|zx.SignalEpairPeerClosed, zx.TimensecInfinite)
+			obs, err := zxwait.WaitContext(context.Background(), s.event, SignalDatagramIncoming|SignalDatagramShutdownRead|zx.SignalEpairPeerClosed)
 			if err != nil {
 				return net.SocketAddress{}, nil, err
 			}
@@ -526,8 +526,8 @@
 
 // Wait waits on the receiver's socket handle until any of the provided signals
 // are asserted, or until the timeout elapses.
-func (s *StreamSocket) Wait(signals zx.Signals, timeout zx.Time) (zx.Signals, error) {
-	return zxwait.Wait(*s.socket.Handle(), signals, timeout)
+func (s *StreamSocket) Wait(ctx context.Context, signals zx.Signals) (zx.Signals, error) {
+	return zxwait.WaitContext(ctx, *s.socket.Handle(), signals)
 }
 
 // Close implements fdio.FDIO.
@@ -550,7 +550,7 @@
 				case zx.ErrPeerClosed:
 					return 0, io.EOF
 				case zx.ErrShouldWait:
-					obs, err := s.Wait(zx.SignalSocketReadable|zx.SignalSocketPeerClosed, zx.TimensecInfinite)
+					obs, err := s.Wait(context.Background(), zx.SignalSocketReadable|zx.SignalSocketPeerClosed)
 					if err != nil {
 						if err, ok := err.(*zx.Error); ok {
 							switch err.Status {
@@ -584,7 +584,7 @@
 			if err, ok := err.(*zx.Error); ok {
 				switch err.Status {
 				case zx.ErrShouldWait:
-					obs, err := s.Wait(zx.SignalSocketWritable|zx.SignalSocketPeerClosed|zx.SignalSocketWriteDisabled, zx.TimensecInfinite)
+					obs, err := s.Wait(context.Background(), zx.SignalSocketWritable|zx.SignalSocketPeerClosed|zx.SignalSocketWriteDisabled)
 					if err != nil {
 						return total, err
 					}