context: sync ExampleWithTimeout with std lib context

CL 47095 applied a change to ExampleWithTimeout to resolve test
flakiness. This change deviated ExampleWithTimeout further away
from the ExampleWithTimeout in standard library's context package.

There was a minor issue spotted in code review. Instead of attempting
to resolve it here, it's better to use the version of ExampleWithTimeout
from standard library that doesn't have the issue, and reduce
maintenance.

Change-Id: I3da9d7f7c35b33b52635df4c61058cb0b8ae95d9
Reviewed-on: https://go-review.googlesource.com/47212
Run-TryBot: Dmitri Shuralyov <shurcool@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/context/withtimeout_test.go b/context/withtimeout_test.go
index 7cddc5f..e6f5669 100644
--- a/context/withtimeout_test.go
+++ b/context/withtimeout_test.go
@@ -11,19 +11,21 @@
 	"golang.org/x/net/context"
 )
 
-var workComplete <-chan int
-
+// This example passes a context with a timeout to tell a blocking function that
+// it should abandon its work after the timeout elapses.
 func ExampleWithTimeout() {
 	// Pass a context with a timeout to tell a blocking function that it
 	// should abandon its work after the timeout elapses.
-	ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
+	ctx, cancel := context.WithTimeout(context.Background(), 50*time.Millisecond)
+	defer cancel()
+
 	select {
-	case <-workComplete:
-		cancel()
+	case <-time.After(1 * time.Second):
 		fmt.Println("overslept")
 	case <-ctx.Done():
 		fmt.Println(ctx.Err()) // prints "context deadline exceeded"
 	}
+
 	// Output:
 	// context deadline exceeded
 }