def compose_result(
        self,
        function: Callable[
            [Result[_ValueType, _ErrorType]],
            Kind3[
                RequiresContextFutureResult,
                _NewValueType,
                _ErrorType,
                _EnvType,
            ],
        ],
    ) -> RequiresContextFutureResult[_NewValueType, _ErrorType, _EnvType]:
        """
        Composes inner ``Result`` with ``ReaderFutureResult`` returning func.

        Can be useful when you need an access to both states of the result.

        .. code:: python

          >>> import anyio
          >>> from returns.context import ReaderFutureResult, NoDeps
          >>> from returns.io import IOSuccess, IOFailure
          >>> from returns.result import Result

          >>> def count(
          ...    container: Result[int, int],
          ... ) -> ReaderFutureResult[int, int, NoDeps]:
          ...     return ReaderFutureResult.from_result(
          ...         container.map(lambda x: x + 1).alt(abs),
          ...     )

          >>> success = ReaderFutureResult.from_value(1)
          >>> failure = ReaderFutureResult.from_failure(-1)

          >>> assert anyio.run(
          ...     success.compose_result(count), ReaderFutureResult.no_args,
          ... ) == IOSuccess(2)
          >>> assert anyio.run(
          ...     failure.compose_result(count), ReaderFutureResult.no_args,
          ... ) == IOFailure(1)

        """
        return RequiresContextFutureResult(
            lambda deps: FutureResult(
                _reader_future_result.async_compose_result(
                    function, self, deps,
                ),
            ),
        )
    def bind_async(
        self,
        function: Callable[
            [_ValueType],
            Awaitable[
                Kind3[
                    RequiresContextFutureResult,
                    _NewValueType,
                    _ErrorType,
                    _EnvType,
                ],
            ],
        ],
    ) -> RequiresContextFutureResult[_NewValueType, _ErrorType, _EnvType]:
        """
        Composes this container with a async function returning the same type.

        .. code:: python

          >>> import anyio
          >>> from returns.context import RequiresContextFutureResult
          >>> from returns.io import IOSuccess, IOFailure

          >>> async def function(
          ...     number: int,
          ... ) -> RequiresContextFutureResult[str, int, int]:
          ...     return RequiresContextFutureResult.from_value(number + 1)

          >>> assert anyio.run(
          ...     RequiresContextFutureResult.from_value(1).bind_async(
          ...        function,
          ...     ),
          ...     RequiresContextFutureResult.no_args,
          ... ) == IOSuccess(2)
          >>> assert anyio.run(
          ...     RequiresContextFutureResult.from_failure(1).bind_async(
          ...        function,
          ...     ),
          ...     RequiresContextFutureResult.no_args,
          ... ) == IOFailure(1)

        """
        return RequiresContextFutureResult(
            lambda deps: FutureResult(_reader_future_result.async_bind_async(
                function, self, deps,
            )),
        )