Correctly handle cancellation and returning once headers are ready

This fixes #6 as well as ensuring we fully cancel the network request when asked to. Unfortunately, we are being trolled by mono/mono#792, so this may be tricky.

## TODO

- [x] Handle cancellation on Android
- [x] Return early on Android
- [ ] Handle cancellation on iOS
- [ ] Make the iOS code not a complete mess
- [x] Return early on iOS