Something about the stacks created by boost::context prevents global structured exception handlers
from being called. This allows the user to register a handler which will be called when there
is an unhandled structured exception in async task.
In certain cases when usleep is passed a small value, there is
a race condition that would cause the process to hang and then
when an attempt to quit the thread was made new contexts would
be allocated rapidly filling all available memory.