Hi! Thank you for the patch. Find my comments below.

Best regards
Yaroslav Dynnikov


On Fri, 13 Aug 2021 at 15:58, Vladimir Davydov <vdavydov@tarantool.org> wrote:
Example output (for more examples see the test output):

  tarantool> f = c:eval('return 123', {}, {is_async = true})
  ---
  ...

  tarantool> tostring(f)
  ---
  - 'net.box.request: 7'
  ...

I think sync has no sense here. It's useless without other info (peer, function).
Also, it complicates the tests and makes them less reliable.
IMHO simple 'net.box.request' is enough.


  tarantool> f
  ---
  - method: eval
    on_push_ctx: []
    result: [123]
    on_push: 'function: builtin#91'
    sync: 7
  ...

This is also weird:

tarantool> f
---
- on_push_ctx: []
  method: call
  sync: 4
  on_push: 'function: builtin#91'
...

tarantool> f.sync
---
- null
...

tarantool> f.method
---
- null
...

Why displaying inaccessible fields? You leave a developer no choice:

tarantool> debug.getmetatable(f).__serialize(f).method
---
- call
...

Of course, I miss that fields, but please, there should be another way to access them.

Also, speaking of https://github.com/tarantool/tarantool/commit/b996502b403c1698c4b0886de636faa0a63cfb70,
which of them are you going to merge first? Whichever it is, I guess the second one is destined to be refactored afterward.

Closes #6314
---
https://github.com/tarantool/tarantool/issues/6314
https://github.com/tarantool/tarantool/tree/vdavydov/netbox-future-serialize