Why is the IDE not able to find the board despite it being clearly seen and selected? i'm having an odd problem where despite having the correct port selected 3 times i'm still getting an error as shown below:  message: 

Arduino: 1.8.9 (Windows 10), Board: "Adafruit Feather M0, Arduino, Off"

Sketch uses 20876 bytes (7%) of program storage space. Maximum is 262144 bytes.
Atmel SMART device 0x10010005 found
Device       : ATSAMD21G18A
Chip ID      : 10010005
Version      : v2.0 [Arduino:XYZ] Mar  5 2016 17:46:52
Address      : 8192
Pages        : 3968
Page Size    : 64 bytes
Total Size   : 248KB
Planes       : 1
Lock Regions : 16
Locked       : none
Security     : false
Boot Flash   : true
BOD          : true
BOR          : true
Arduino      : FAST_CHIP_ERASE
Arduino      : FAST_MULTI_PAGE_WRITE
Arduino      : CAN_CHECKSUM_MEMORY_BUFFER
Erase flash
done in 0.832 seconds

Write 21164 bytes to flash (331 pages)

[=====                         ] 19% (64/331 pages)
[===========                   ] 38% (128/331 pages)
[=================             ] 58% (192/331 pages)
[=======================       ] 77% (256/331 pages)
[============================= ] 96% (320/331 pages)
[==============================] 100% (331/331 pages)
done in 0.128 seconds

Verify 21164 bytes of flash with checksum.
Verify successful
done in 0.016 seconds
CPU reset.
Couldn't find a Board on the selected port. Check that you have the correct port selected.  If it is correct, try pressing the board's reset button after initiating the upload.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -&gt; Preferences.
The SAMD boards connect to computer over native USB support of the MCU. The handling of the USB is done by Arduino core functions linked at build to your sketch.

A consequence of using the native USB port is, if your sketch has a problem, it influences the USB communication. In this case you can activate the bootloader to handle the USB port and the upload. It is done by double clicking the reset button on board.