allow for a close reason to be propagated around the close/closing methods

and populate this where relevant in framework generated closes (particularly for connect failures)