Suggestion: Make an S3-uploader package with _internal_ connection pooling, upload queueing and concurrency handling.
Nice features include:
> Retry Everything: All http requests and every part is retried on both uploads and downloads.
> Configurable conncurrency
> Uses an io.Writer (you could actually start posting to S3 before all of the data gets in on your side.)
etc.