Added capability to abort async requests.

Refactored request methods to support it.

Issue with discussion: #2491
Should elaborate on which APIs return the handle that is given here as a parameter.