Add options.nonblocking and WouldBlock return status ... and code to support it.  race condition not addressed.