Is this a good idea? If the user supplies a scheme which we don't support, I think an error is preferred.

Perhaps we can do...

    pool_cls = pool_classes_by_scheme[scheme or 'http']

This way it will only default if the scheme is not provided?