Maybe we could make the promise-chaining clearer by creating and returning `response` here, and receiving a `:Channel.NetConnectResponse` as the argument in the next `then(...)`. This way we'll avoid mutating something declared outside of the asynchronous context, which could become risky.