I suggest that we skip the `closingPromise` and instead add a property `closed` that returns   `this.output.closed`. My arguments are:
* Seems logical for developers as it is consistent  with the `opened` property
* I guess that most developers will just be interested in detecting the state of the TCP connection, not the state of the readble and writable streams separately
* The `closed` property detects a closed TCP connection caused by any reason (note that 
the `closingPromise` is created by a call to the close() function and we still need another way to detect a TCP connection close by the remote peer and by error situations)

This would that the follwoing property is specified:
readonly    attribute Promise         closed;

So in the example the last lines would be (instead of detecting input and output streams closing separately):

mySocket.closed.then(
  () => {
    console.log("Socket has been cleanly closed");
  },
  e => console.error("Socket closed due to error: ", e);
);