Try deauthenticating with a higher count, as in:
The standard is aireplay-ng -0 1 <yadda yadda>, However, I've found that increasing the number of deauths helps to ensure you get a good handshake. (Hat tip to Batsley).aireplay-ng -0 15 -a <AP> -c <client MAC> <iface>
When I'd get a WPA handshake with the standard deauth of 1, often aircrack-ng would not find the passphrase in the list. But when I increase the deauths, it seems to work better.