Portiere dotato di ottima agilità e riflessi,[1][2] è molto abile nel chiudere lo specchio della porta negli uno contro uno.[2] Si distingue per il posizionamento e per la lettura del gioco avversario.[2] Inoltre, è bravo nel parare i calci di rigore.[2]
Dopo essersi svincolato dallo United, il 2 luglio 2014 viene tesserato dal Verona.[4] Inizialmente preso come terzo portiere, a causa degli infortuni concomitanti dei colleghi di reparto Rafael e Benussi,[5] esordisce in Serie A il successivo 24 settembre, a 19 anni, nella partita contro il Genoa (2-2). Nel febbraio del 2015 partecipa con la squadra Primavera al Torneo di Viareggio. Durante il torneo riesce a mantenere la sua porta imbattuta per 458 minuti,[6] risultando più volte decisivo ai calci di rigore. Con le sue prestazioni trascina il Verona alla finale persa contro l'Inter e viene premiato come miglior portiere della manifestazione.[7]
Nella stagione successiva inizia come secondo portiere ma conquista ben presto il posto da titolare, complice anche l'esclusione dalla rosa di Rafael, che viene poi ceduto in prestito al Cagliari durante il mercato invernale. Colleziona 26 presenze ma a fine stagione il Verona retrocede in Serie B, come ultima in classifica.
Aston Villa
L'8 luglio 2016 firma un contratto quadriennale con l'Aston Villa, club di Championship allenato da Roberto Di Matteo.[8] Il suo esordio ufficiale avviene il 7 agosto seguente, alla 1ª giornata di campionato, nella partita contro lo Sheffield Weds persa per 1-0 a Hillsborough, nella quale subisce la rete dal calciatore italo-argentino Forestieri.[9] Continua ad essere schierato come titolare, ottenendo 20 presenze in campionato fino a metà stagione.
Atalanta
Il 14 gennaio 2017 viene ceduto all'Atalanta in prestito per 18 mesi, con diritto di riscatto.[10] A Bergamo viene utilizzato inizialmente come portiere di riserva, dietro il titolare Etrit Berisha. Esordisce il 19 marzo 2017, scendendo in campo dal primo minuto nella vittoria casalinga per 3-0 contro il Pescara,[11][12] e chiude la stagione con 4 presenze.
Nella stagione successiva ricopre nuovamente il ruolo di secondo portiere e ottiene 7 presenze in campionato.
Il 9 giugno 2018 viene riscattato a titolo definitivo per 4.5 milioni di euro.[13] Il 9 agosto dello stesso anno esordisce nelle competizioni europee, disputando da titolare l'andata del terzo turno preliminare di Europa League contro gli israeliani dell'Hapoel Haifa. Da marzo 2019 conquista definitivamente la maglia da titolare nella formazione orobica a discapito di Berisha.[14][15][16] Disputa tutti gli incontri fino al termine della stagione, chiusa dal suo club con un terzo posto in classifica e la conseguente qualificazione alla Champions League, e gioca da titolare anche la finale di Coppa Italia, persa contro la Lazio.[17]
Ormai titolare fisso,[16] il 18 settembre 2019 esordisce in UEFA Champions League, nella partita della fase a gironi persa per 4-0 sul campo dei croati della Dinamo Zagabria.[18] Termina la stagione 2019-2020 con 41 presenze in tutte le competizioni e infortunandosi al crociato all'ultima giornata di campionato, nella sconfitta per 0-2 contro l'Inter.[19][20]
Torna in campo il 21 novembre 2020, in occasione del pareggio per 0-0 sul campo dello Spezia.[21] Il 22 febbraio 2021 raggiunge quota 100 presenze con i bergamaschi, scendendo in campo nel successo per 4-2 contro il Napoli.[22] Successivamente, a causa di problemi col tecnico dei nerazzurri Gian Piero Gasperini,[23][24] viene relegato in panchina in favore di Marco Sportiello.[25] Torna in campo il 21 marzo, nel successo per 0-2 in casa del Verona,[26] e da lì in poi conserva il posto sino al termine della stagione, disputando da titolare la finale di Coppa Italia persa per 2-1 contro la Juventus.[27]
Prestiti a Tottenham e Fiorentina
Il 24 luglio 2021 lascia l'Atalanta e fa ritorno in Inghilterra, trasferendosi in prestito annuale con diritto di riscatto al Tottenham,[28][29][30] dove va a ricoprire il ruolo di secondo portiere dietro il capitano Hugo Lloris. Il 19 agosto esordisce con gli Spurs, in occasione dell'andata del turno preliminare di qualificazione ai gironi di Conference League in casa del Paços Ferreira, gara conclusasi 1-0 in favore della squadra portoghese.[31] Durante il resto della stagione non riesce a trovare molto spazio. Il 2 giugno 2022, infine, i londinesi annunciano di non volerlo riscattare.[32]
Il 9 luglio seguente passa alla Fiorentina in prestito con diritto di riscatto.[33][34] Dieci anni dopo aver lasciato il settore giovanile,[35] gioca la sua prima partita ufficiale in maglia viola nella gara d'esordio in campionato contro la Cremonese.[36] Anche con i toscani, tuttavia, trova poco spazio, e a gennaio lascia il club.[37][38]
Prestito al Napoli
Il 25 gennaio 2023, dopo aver rescisso il contratto che sanciva il prestito annuale alla Fiorentina,[39] viene preso in prestito breve dal Napoli,[40][41] con diritto di riscatto fissato a 8 milioni di euro.[42][43] Esordisce l'11 marzo seguente, nella partita casalinga contro l'Atalanta vinta dagli azzurri per 2-0,[44] partendo dal primo minuto al posto dell'infortunato Alex Meret.[45] Il successivo 4 maggio, in virtù del pareggio per 1-1 del Napoli contro l'Udinese, si aggiudica il primo scudetto della sua carriera, il terzo della storia del club partenopeo.[46][47]
Il 16 luglio seguente, viene ufficializzato il rinnovo del prestito per un'ulteriore stagione.[48][49] Durante l'annata colleziona 10 presenze complessive, per poi tornare all'Atalanta al termine della stessa stagione.[50][51]
Prestito al Genoa
Il 30 luglio 2024 viene ceduto in prestito al Genoa.[52][53]
Nel giugno del 2018, con lo pseudonimo Gollorius, pubblica il singolo Rapper coi guanti, il cui incasso viene devoluto in beneficenza.[61] Quattro anni dopo, il 23 giugno 2022, esce il suo secondo singolo Champions Dream, realizzato con il rapper Vegas Jones.[62]