### Buffer-oriented asynchronous write stream requirements

A type `X` meets the `AsyncWriteStream` requirements if it satisfies the requirements listed below.

In the table below, `a` denotes a value of type `X`, `cb` denotes a (possibly const) value satisfying the `ConstBufferSequence` requirements, and `t` is a completion token.

Table 5. AsyncWriteStream requirements

operation | type | semantics, pre/post-conditions
--- | --- | ---
`a.get_executor()` | A type satisfying the Executor requirements. | Returns the associated I/O executor.

`a.async_write_some(cb,t)`

The return type is determined according to the requirements for an asynchronous operation.

Meets the requirements for a write operation and an asynchronous operation with completion signature `void(error_code ec, size_t n)`.
If `buffer_size(cb) > 0`, initiates an asynchronous operation to write one or more bytes of data to the stream `a` from the buffer sequence `cb`. If successful, `ec` is set such that `!ec` is `true`, and `n` is the number of bytes written. If an error occurred, `ec` is set such that `!!ec` is `true`, and `n` is 0.
If `buffer_size(cb) == 0`, the operation completes immediately. `ec` is set such that `!ec` is `true`, and `n` is 0.