Surface Pro 4's (and many of the others) use the Marvell Avastar chipset,
This chipset is known to have significant non-fixable issues with roaming. In particular they incorrectly cache the key used to encrypted the traffic when they briefly go out of coverage when roaming between access points, and don't respond to requests to clear the key.
Typically a user will see the connection working. They move to another place briefly going out of coverage and then roam. The new AP sends a new key to use. The chipset keeps trying to use the old key.
So now the chipset is encrypting and sending data using the wrong key. The AP can't decrypt it.
If you Google the issue you'll find it is a well known issue with Surface Pro's and affects all WiFi vendors.
https://www.reddit.com/r/Surface/comments/a5kly1/microsoft_please_source_a_new_wifi_chip/
If you want good WiFi - don't by Surface Pro's.