Just spent ages figuring out that URLSession will just time out your request if you try to use an uploadTask but don't specify the HTTP method. Such an obvious mistake, but an error would've been nice!