pub async fn message(&mut self) -> Result<Option<T>, Status> {
        match future::poll_fn(|cx| Pin::new(&mut *self).poll_next(cx)).await {
            Some(Ok(m)) => Ok(Some(m)),
            Some(Err(e)) => Err(e),
            None => Ok(None),
        }
    }
Fetch the next message from this stream.

# Return value

- `Result::Err(val)` means a gRPC error was sent by the sender instead
of a valid response message. Refer to [`Status::code`] and
[`Status::message`] to examine possible error causes.

- `Result::Ok(None)` means the stream was closed by the sender and no
more messages will be delivered. Further attempts to call
[`Streaming::message`] will result in the same return value.

- `Result::Ok(Some(val))` means the sender streamed a valid response
message `val`.

```rust
# use tonic::{Streaming, Status, codec::Decoder};
# use std::fmt::Debug;
# async fn next_message_ex<T, D>(mut request: Streaming<T>) -> Result<(), Status>
# where T: Debug,
# D: Decoder<Item = T, Error = Status> + Send  + 'static,
# {
if let Some(next_message) = request.message().await? {
println!("{:?}", next_message);
}
# Ok(())
# }
```
tonic/src/codec/decode.rs