size_t write_some( AsyncWriteStream& s, const ConstBufferSequence& buf ) { detail::non_blocking<AsyncWriteStream> non_blocking; if( non_blocking(s) || non_blocking(s,true) ) { boost::system::error_code ec; size_t r = s.write_some( buf, ec ); if( !ec ) return r; if( ec != boost::asio::error::would_block) { BOOST_THROW_EXCEPTION( boost::system::system_error(ec) ); } } promise<size_t>::ptr p(new promise<size_t>("fc::asio::write_some")); s.async_write_some( buf, boost::bind( detail::read_write_handler, p, _1, _2 ) ); return p->wait(); }