Extend the Func type and the (*Memo).Get method so that callers may provide an optional done channel through which they can cancel the operation (§8.9).
The results of a cancelled Func call should not be cached.
Package memo provides a concurrency-safe non-blocking memoization
of a function. Requests for different keys proceed in parallel.
Concurrent requests for the same key block until the first completes.
This implementation uses a monitor goroutine.