@ben has done some simple refactoring to allow http -> https (and viceversa). This works because it's the same transport. I've no idea if HTTP is allowed to set a Location to e.g. `git://` or `ssh://`, but that would indeed require larger refactoring.