Fixes and improvements to Server, Overlay

Tidying up some loose ends.
Actually that's a bug, cancel() can throw. It should use cancel(ec).