Use modern syntax.
Generalise response handling
Non-HTTP URL responses store the full header text
Removed workspace.
Merge remote-tracking branch 'upstream/sam/async'