Python ldap vs ldap3 Inconsistencies

I am stuck using python-ldap (used by flask_appbuilder) for a project. I noticed that the python-ldap is failing with "Error initializing SSL/TLS". To verify that my ldap settings were correct, I wrote a script using ldap3 alongside python-ldap and noticed that ldap3 succeeds when using the same configuration as python-ldap.

The test code is:

import ldap3
import ldap
import ssl

URL = 'ldaps://....example.com:636'
USER = 'CN=...'
PASS = '...'
SEARCH = 'OU=...'
FILTER = '(&(objectClass=user))'

# ldap3
server = ldap3.Server(
    URL,
    use_ssl=True,
    tls=ldap3.Tls(validate=ssl.CERT_REQUIRED),
)
conn = ldap3.Connection(server, USER, PASS)
conn.bind()
conn.search(SEARCH, FILTER)

# python-ldap
con = ldap.initialize(URL, 4)
con.set_option(ldap.OPT_REFERRALS, 0)
con.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_ALLOW)
con.set_option(ldap.OPT_X_TLS_NEWCTX,0)
con.start_tls_s()
con.bind_s(USER, PASS)

I am able to successfully get results from the ldap3 block, but when the python-ldap start_tls_s block is reached I get:

ldap.UNAVAILABLE: {'info': u'00000000: LdapErr: DSID-0C091338, comment: Error initializing SSL/TLS, data 0, v4563', 'desc': u'Server is unavailable'}

The behaviour is consistent across both my laptop and a test machine (both are linux boxes). Does anyone know why this difference occurs?